触发onEdit(e)不触发

时间:2018-11-18 18:22:39

标签: javascript google-apps-script google-sheets triggers

当我尝试使用此触发器仅setValue("random")到某个单元格时,它确实起作用,但是当我尝试执行此代码(用于从所选电子表格中返回某些工作表名称)时,它不起作用!当我将该代码块作为单独的函数运行时,它可以正常工作并正常返回工作表。

那么,当我更改D2单元格中的值时,为什么为什么不执行“ //返回建筑列表”部分中的代码?

function onEdit(e) {

var range = e.range;
var rangeEdit = e.range.getA1Notation();

if(rangeEdit == "D2"){

//RETURNING JUST BUILDING LIST  
var ss = SpreadsheetApp.getActiveSpreadsheet();

ss.getSheetsByName("OVERVIEW").getRange('A2').setValue("OK")

var sRNG = ss.getSheetByName("KEYS").getRange('A1:A12').getValues();

for (var z=0; z<sRNG.length; z++)
  if (sRNG[z][0] == ss.getSheetByName("OVERVIEW").getRange('G3').getValue()) {
  var xyz = z + 1;
  }

 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var range = ss.getSheetByName("OVERVIEW").getRange(1, 8, 50, 1); 
 range.clear();

var shArray = [];
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

var spreadSheetsInA = 
SpreadsheetApp.openByUrl(ss.getSheetByName("KEYS").getRange('B' + xyz).getValue()).getSheets();

shArray = spreadSheetsInA.map(function(sheet) {
return [sheet.getName()];
});

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = ss.getSheetByName("OVERVIEW").getRange(1, 8, shArray.length, 1);
range.setValues(shArray);

var rDEL = 1
for (var xdel = 0; xdel<shArray.length; xdel++){
if(shArray[xdel][0].indexOf("Overview")>-1 | shArray[xdel][0].indexOf("Cashflow")>-1 | shArray[xdel][0].indexOf("Dates")>-1){
var delSHT = ss.getSheetByName("OVERVIEW");
delSHT.getRange('H' + rDEL).clear();

}
rDEL++
}  
}
}

即使我尝试了此操作,也行不通...

function onEdit(e) {

  var range = e.range;
  var rangeEdit = e.range.getA1Notation();
  if(rangeEdit == "D2"){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.getSheetsByName("OVERVIEW").getRange("A2").setValue("ok")
}
}

基本上,如果工作表概述中D2中的值已更改,我只需要执行代码!

0 个答案:

没有答案