【问题标题】:How do I restrict a trigger to a specific sheet/tab?如何将触发器限制到特定的工作表/选项卡?
【发布时间】:2020-07-30 19:50:46
【问题描述】:

我在谷歌表格中编写了一个脚本,该脚本将在整个电子表格完全更新时更改所选单元格中的时间戳。但是,我需要仅在更新一张纸(标签)时更新时间戳。这是我当前的功能:

function onEdit() {
  var sheetActive = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("Board")
    .getRange('A28')
    .setValue(new Date());
}

我要检查更新的工作表(选项卡)的名称是“输入”,如果重要的话,选项卡中的特定单元格是 A1。

【问题讨论】:

  • 嗨 Clay,我发布了我的答案。希望对您有所帮助。
  • 看起来可以解决问题,谢谢马里奥斯!

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


【解决方案1】:

只要编辑任何工作表/选项卡,onEdit 触发器就会触发。它不能被限制在一张纸上。但是,即使它被触发,也可以通过简单的if 使其不执行任何操作,并测试每次编辑时发送的event object,其中包含所做编辑的情况。

示例

/**
 * @param {GoogleAppsScript.Events.SheetsOnEdit} param1
 */
function onEdit({ range: /*edited range*/ eRange }) {
  const restrictCell = 'A1',
    restrictToSheet = 'Input';
  if (
    eRange.getA1Notation() !== restrictCell ||
    eRange.getSheet().getName() !== restrictToSheet
  )
    return;
  SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName('Board')
    .getRange('A28')
    .setValue(new Date());
}

【讨论】:

    【解决方案2】:

    这就是你要找的:

    function onEdit(e) {
    
      var row = e.range.getRow();
      var col = e.range.getColumn();
      if ( e.source.getActiveSheet().getName() === "Input" && (row==1 && col==1) ){
     e.source.getSheetByName('Board').getRange('A28').setValue(new Date())      
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-26
      • 1970-01-01
      • 2010-09-21
      • 2012-01-23
      • 2010-11-17
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多