正确编写onEdit脚本

时间:2018-08-27 14:34:36

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

我有一个包含3个电子表格的Google表格文件。前两个中的每个包含许多数字数据条目。我要做的就是如果在另一张纸上更改了任何数据,则在第三个(tt)上更改一个单元格值。查看我不完整的onEdit()脚本,您会发现我显然不知道自己在做什么。如何更改仅在前两个电子表格上任何地方所做的任何更改的第三个电子表格(tt)上的“ a5”单元格的值?

function onEdit(event)
{
  var aa = event.SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Input-Expenses");
  var ss = event.SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Input-Income-n-Assets");
  var tt = event.SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Run Program");
  var r = event.aa.getActiveRange('a1:r105');
  var s = event.ss.getActiveRange('d1:q94');
  var g =  0
  tt.getRange('a5').setValue(g);  
}

2 个答案:

答案 0 :(得分:0)

您需要参考这篇文章:

https://developers.google.com/apps-script/guides/triggers/

查找编辑触发器。

  

range 一个Range对象,代表该单元格或单元格范围   被编辑。

用法:

var editedRange = event.range; 
var editedSheet = editedRange.getSheet();
if (editedSheet.getName() === 'Sheet1')
{
  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
  // do smth
}

答案 1 :(得分:0)

这应该做你想要的

function onEdit(event) {
  try {
    var aName = event.range.getSheet().getName();  // Active sheet
    if( ( aName === "Input-Expenses" ) || ( aName === "Input-Income-n-Assets" ) ) {
      // You said anywhere on these 2 sheets and put in Run Program:A5
      event.source.getSheetByName("Run Program").getRange("A5").setValue(0);
    }
  }
  catch(err) {
    SpreadsheetApp.getUi().alert(err);
  }
}