仅在对特定工作表进行编辑时才运行OnEdit

时间:2018-07-10 12:43:27

标签: google-apps-script google-sheets

全部:

我是新手,对编码非常陌生,所以我很抱歉我的编码可能会让人畏缩。我有一个脚本,该脚本将根据称为“教师信息”的工作表中单元格的值来显示和隐藏工作表。该脚本运行良好,只不过它在每次对文件中的任何工作表进行编辑时都在运行。我只希望它在对“教师信息”表进行更改时才能运行。请指教。感谢您分享您的专业知识。这是我当前的代码:

function HideSheets() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Teacher Information");
  var sheet2 = ss.getSheetByName("SGO1 Plan");
  var sheet3 = ss.getSheetByName("SGO1 Data");
  var sheet4 = ss.getSheetByName("SGO1 Report");
  var sheet5 = ss.getSheetByName("SGO2 Plan");
  var sheet6 = ss.getSheetByName("SGO2 Data");
  var sheet7 = ss.getSheetByName("SGO2 Report");
  var sheet8 = ss.getSheetByName("SGO 1 Plan");
  var sheet9 = ss.getSheetByName("SGO 1 Data");
  var sheet10 = ss.getSheetByName("SGO 1 Report");
  var sheet11 = ss.getSheetByName("SGO 2 Plan");
  var sheet12 = ss.getSheetByName("SGO 2 Data");
  var sheet13 = ss.getSheetByName("SGO 2 Report");

  var cell1 = sheet1.getRange('C22');
  var cell2 = sheet1.getRange('AJ22');

  if (cell1.getValue() == "") {
    sheet2.showSheet();
    sheet3.showSheet();
    sheet8.showSheet();
    sheet9.showSheet();
  }

  if (cell1.getValue() == "0") {
    sheet2.hideSheet();
    sheet3.hideSheet();
    sheet8.hideSheet();
    sheet9.hideSheet();
  }

  if (cell1.getValue() == "1") {
    sheet2.showSheet();
    sheet3.showSheet();
    sheet8.hideSheet();
    sheet9.hideSheet();
  }

  if (cell1.getValue() == "2") {
    sheet2.hideSheet();
    sheet3.hideSheet();
    sheet8.showSheet();
    sheet9.showSheet();
  }

  if (cell2.getValue() == "") {
    sheet5.showSheet();
    sheet6.showSheet();
    sheet11.showSheet();
    sheet12.showSheet();
  }

  if (cell2.getValue() == "0") {
    sheet5.hideSheet();
    sheet6.hideSheet();
    sheet11.hideSheet();
    sheet12.hideSheet();
  }

  if (cell2.getValue() == "1") {
    sheet5.showSheet();
    sheet6.showSheet();
    sheet11.hideSheet();
    sheet12.hideSheet();
  }

  if (cell2.getValue() == "2") {
    sheet5.hideSheet();
    sheet6.hideSheet();
    sheet11.showSheet();
    sheet12.showSheet();
  }

}

2 个答案:

答案 0 :(得分:1)

您可以检查工作表名称并根据其进行操作。

类似这样的东西:

function HideSheets(e) {
   if (e.range.getSheet().getName() != "Teacher Information") {
       // If the sheet name is not equal to "Teacher Information" then Back Off..!!
       return
   }
   // Put your other codes below
   // More codes
}

这将在继续之前检查工作表名称,如果不等于"Teacher Information",它将返回/中断并且不执行其后的代码

参考和进一步阅读:https://developers.google.com/apps-script/guides/triggers/events#edit(根据Techhowch的评论,归功于他)

答案 1 :(得分:0)

您没有说这是否是一个On edit触发器,可以稍有不同,但是您也可以这样做。

var ss = SpreadsheetApp.getActiveSpreadsheet();
if( ss.getActiveSheet().getName() !== "Teacher Information" ) return;