如何在多个工作表上运行onEdit

时间:2013-12-19 02:09:36

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

我的代码是一个调度程序,可让用户注册特定工作表中的特定插槽。问题是该代码仅适用于第一张表(“Jan 20 Mon”)。

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Jan 20 Mon");
  var sheet2 = ss.getSheetByName("Jan 21 Tue");
  var sheet3 = ss.getSheetByName("Jan 22 Wed");
  var sheet4 = ss.getSheetByName("Jan 23 Thurs");
  var sheet5 = ss.getSheetByName("Jan 24 Fri");

  var condition1as1 = sheet1.getRange("B2").getValue(); var condition1bs1 = sheet1.getRange("C2").getValue(); var condition1cs1 = sheet1.getRange("D2").getValue(); var condition1ds1 = sheet1.getRange("E2").getValue();
  var condition1as2 = sheet2.getRange("B2").getValue(); var condition1bs2 = sheet2.getRange("C2").getValue(); var condition1cs2 = sheet2.getRange("D2").getValue(); var condition1ds2 = sheet1.getRange("E2").getValue();
  var condition1as3 = sheet3.getRange("B2").getValue(); var condition1bs3 = sheet3.getRange("C2").getValue(); var condition1cs3 = sheet3.getRange("D2").getValue(); var condition1ds3 = sheet1.getRange("E2").getValue();
  var condition1as4 = sheet4.getRange("B2").getValue(); var condition1bs4 = sheet4.getRange("C2").getValue(); var condition1cs4 = sheet4.getRange("D2").getValue(); var condition1ds4 = sheet1.getRange("E2").getValue();
  var condition1as5 = sheet5.getRange("B2").getValue(); var condition1bs5 = sheet5.getRange("C2").getValue(); var condition1cs5 = sheet5.getRange("D2").getValue(); var condition1ds5 = sheet1.getRange("E2").getValue();

  if (condition1cs1 == "1" && condition1ds1 == "None") {
    var response = Browser.msgBox("PLEASE RECHECK SCHEDULE AND TID.", condition1as1+" , "+condition1bs1+" Are you sure?", Browser.Buttons.YES_NO);
    if (response == "yes") {
      sheet1.hideRows(2,1);
      sheet1.getRange('E2').setValue("1");
      //insert msgBox here
    } else {
      Browser.msgBox("Input again.");
    }
  }

  if (condition1cs2 == "1" && condition1ds2 == "None") {
    var response = Browser.msgBox("PLEASE RECHECK SCHEDULE AND TID.", condition1as2+" , "+condition1bs2+" Are you sure?", Browser.Buttons.YES_NO);
    if (response == "yes") {
      sheet2.hideRows(2,1);
      sheet2.getRange('E2').setValue("1");
      //insert msgBox here
    } else {
      Browser.msgBox("Input again.");
    }
  }
}

基本上,我尝试设置我正在使用的所有工作表,以便我可以随时访问它们。第一个if是第一张(并且它可以工作)。第二个if是第二张(并且它不起作用)。

1 个答案:

答案 0 :(得分:0)

Understanding Events中阅读电子表格编辑活动。使用传递给onEdit函数的事件,您可以确定编辑发生的位置,并避免使用任何显式方法来检索该信息。

警告:此功能目前已被2013年12月推出的新表格打破。有足够的Scripting Issues,您现在应该避免使用新表格。

这是你如何做到这一点的一个例子。

function onEdit(event) {
  var ss = event.source;  // you don't use this, but if you did, here's how to get it

  var cell = event.range;  // This is the cell that was edited
  // TODO: Add code that returns immediately if the edit occurred somewhere we don't care about

  var sheet = cell.getSheet();

  var request = sheet.getRange("B2:E2").getValues();
  var conditionas = request[0];
  var conditionbs = request[1];
  var conditioncs = request[2];
  var conditionds = request[3];

  if (conditioncs == "1" && conditionds == "None") {
    var response = Browser.msgBox("PLEASE RECHECK SCHEDULE AND TID.", conditionas+" , "+conditionbs+" Are you sure?", Browser.Buttons.YES_NO);
    if (response == "yes") {
      sheet.hideRows(2,1);
      sheet.getRange('E2').setValue("1");
      //insert msgBox here
    } else {
      Browser.msgBox("Input again.");
    }
  }
}