首页 > 解决方案 > Trigger script when a specific cell value in another sheet chan

问题描述

Hello everyone so I am using this google sheets script below that copies the entire contents of one sheet to another sheet. I would like for this script to only trigger when a there is value change in cell TI of the sheet that being copied. Does any one have an idea how to do this? Thank you so much for you help.

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);

}

标签: google-apps-scriptgoogle-sheets

解决方案


尝试这个:

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);
  }
}

推荐阅读