【问题标题】:Copy Row if Cell Contains X to Different Sheet then delete row.如果单元格包含 X,则将行复制到不同的工作表,然后删除行。
【发布时间】:2018-02-09 01:51:07
【问题描述】:

我整天都在寻找如何做到这一点并接近但从未完成状态。

我要做的是在活动电子表格上,查看工作表“Happy”。如果列 G 中的单元格包含“已关闭”,我想将该行的范围 A:K 之间的单元格复制到“悲伤”表中。复制完成并移动数据后,我想删除“快乐”表上从中复制数据的整行。

如果单元格 = 关闭,则复制到工作表并删除,否则什么都没有。

我将每 5 分钟运行一次此脚本,我可以使用触发器来执行此操作。

任何帮助将不胜感激。

这是我目前尝试过的

function Copy() {
 var sss = SpreadsheetApp.getActive()
 var ss = sss.getSheetByName('Happy');
 var range = ss.getRange('A:k'); 
 var data = range.getValues();

 var tss = SpreadsheetApp.getActive(); 
 var ts = tss.getSheetByName('Sad:'); 

 var valuesToCopy = ss.getRange(2,2,100).getValues();
  ts.getRange(2,ts.getLastRows()+1,valuesToCopy.length,1).setValues(valuesToCopy);

【问题讨论】:

  • 搜索 Closed 或 Sad 值的代码部分在哪里?

标签: google-apps-script google-sheets


【解决方案1】:
  function copyrange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Happy'); //source sheet
  var testrange = sheet.getRange('G:G');
  var testvalue = (testrange.getValues());
  var csh = ss.getSheetByName('Sad'); //destination sheet
  var data = [];
  var j =[];

  //Condition check in G:G; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
  if ( testvalue[i] == 'Closed') {
  data.push.apply(data,sheet.getRange(i+1,1,1,11).getValues());
  //Copy matched ROW numbers to j
  j.push(i);
 }
 }
//Copy data array to destination sheet

 csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);

//Delete matched rows in source sheet
  for (i=0;i<j.length;i++){
  var k = j[i]+1;
  sheet.deleteRow(k);

//Alter j to account for deleted rows
  if (!(i == j.length-1)) {
  j[i+1] = j[i+1]-i-1;
}
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    相关资源
    最近更新 更多