【问题标题】:Apps Script onEdit call functionApps Script onEdit 调用函数
【发布时间】:2018-02-07 18:50:01
【问题描述】:

当用户更新工作表中的单元格 B2 时,我试图触发一个函数(我将其命名为“importData”)。 importData 函数在手动运行以及在视图菜单中创建通用 onEdit 触发器时起作用,但我希望它专门用于编辑该特定单元格。

我编写了以下 onEdit ,它可以做所有事情,但调用我想要的函数。谁能指出我做错了什么?

谢谢。 onEdit 和 importData 如下:

    function onEdit(){
          var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
          var activeCell = ss.getActiveCell();      
          if (activeCell.getRow() == 2 && activeCell.getColumn() == 2) {         
            importData();
          }     
        }


//This function retrieves data from Form Responses.
//It filters based on user input.

function importData() {

  var sourceSS = SpreadsheetApp.openById("1RCObWVpLUyRJsvHLfA89GNUBrKQIvzt_6Sp7Ftq8Gm4");
  var sourceSheet = sourceSS.getSheets()[2];
  var sourceRange = sourceSheet.getRange('C2:I');
  var values = sourceRange.getValues();

  var targetSS = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheet = targetSS.getActiveSheet();
  var personSearchRange = targetSheet.getRange("B2");
  var projectSearchRange = targetSheet.getRange("D2");
  var taskCompletedSearchRange = targetSheet.getRange("B3");

  var filterValues = new Array();
  for (var i = 0; i < values.length; i++){
    if (values [i][4].match(taskCompletedSearchRange.getValue()) && values [i][0].match(projectSearchRange.getValue()) && values [i][5].match(personSearchRange.getValue())){
      filterValues.push(values[i])
    }
}

  var clearRange = targetSheet.getRange(6, 1, targetSheet.getLastRow(), targetSheet.getLastColumn());
  clearRange.clearContent();

  var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, filterValues.length, filterValues[0].length);
  targetRange.setValues(filterValues);

}

【问题讨论】:

  • return importData();,应该做的工作。
  • 谢谢。我尝试了几种方法,但仍然没有执行该功能。
  • 日志中是否显示任何错误?
  • 没有错误也没有日志。当我查看日志时,它显示“没有日志。使用 logger API 将日志添加到您的项目。”我不确定那是什么意思。无论如何,它什么都不做。除了我对 B2 的编辑之外,一切都保持原样。
  • 尝试将函数命名为其他名称并使用可安装的 onEdit 触发器。简单触发器不适用于需要授权的脚本。

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


【解决方案1】:

根据 Cooper 的评论,onEdit 不适用于我的函数,因为我正在访问另一个电子表格。那需要授权。不幸的是,没有错误,它只是不会这样做。我听从了 Cooper 的建议,使用了一个可安装的触发器,虽然很钝,但是......感谢您的 cmets/建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多