【发布时间】: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