当用户更新工作表中的单元格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);
}
答案 0 :(得分:0)
Per Cooper的评论,onEdit不适用于我的功能,因为我正在访问另一个电子表格。这需要授权。不幸的是,没有错误,它只是不会这样做。我遵循了Cooper的建议,并使用了一个可以安装的触发器,它是直言不讳但是...感谢您的意见/建议。