当另一个工作表中的特定单元格值更改时触发脚本脚本

时间:2020-05-22 15:06:19

标签: google-apps-script google-sheets

大家好,所以我在下面使用这个Google工作表脚本,它将一个工作表的全部内容复制到另一工作表。我希望此脚本仅在要复制的工作表的单元格TI中有值更改时触发。是否有人知道如何执行此操作?非常感谢您的帮助。

function Packaging() {
 var t = SpreadsheetApp.openById('sheetid');


var pp = t.getSheetByName('UP');
var ppk = pp.getRange(1,1,pp.getLastRow(),pp.getLastColumn()).getValues();
var data = []                       
for (var i = 0; i< ppk.length ; i++){
if(ppk[i][24] == "Yes")        
{
data.push(ppk[i])
}
}


var s = SpreadsheetApp.getActiveSpreadsheet();


var sp = s.getSheetByName('DOWN');
sp.getRange(1,1,sp.getLastRow(),sp.getLastColumn()).clearContent();
sp.getRange(1,1,data.length,data[0].length).setValues(data);  

sp.deleteColumns(29, 7);

}

1 个答案:

答案 0 :(得分:1)

尝试一下:

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet being copied' && e.range.columnStart=="col of cell" && 
  e.range.rowStart=="row of cell" && e.value=="special value of cell") {
    var vA=sh.getDataRange().getValues();
    e.source.getSheetByName('sheet to copy to').getRange(1,1,vA.length,vA[0].length).setValues(vA);
  }
}

也许是因为值的变化:

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet being copied' && e.range.columnStart=="col of cell" && 
  e.range.rowStart=="row of cell" && e.oldValue && e.value!=e.oldValue) {
    var vA=sh.getDataRange().getValues();
    e.source.getSheetByName('sheet to copy to').getRange(1,1,vA.length,vA[0].length).setValues(vA);
  }
}