【发布时间】:2017-03-10 09:05:01
【问题描述】:
我已经在论坛中搜索了几次,但无法找到我的问题的答案。
我正在使用 Google 表格来跟踪我的团队的项目进度。我目前有 5 个用户,每个用户都有自己的选项卡,以及三个额外的选项卡,这些选项卡旨在动态化,但对除我自己以外的任何用户都相当放手。
为了使这个跟踪器易于使用,我实现了一个 onEdit 脚本,以将任何标记为“已完成”的项目从用户选项卡自动移动到“已完成”选项卡。
该脚本在我前几次测试时运行良好,但现在我遇到了这个错误:
TypeError:无法从未定义中读取属性“源”。 (第 7 行)
我不完全确定为什么脚本无法找到源代码,所以我不确定我需要在我的代码中修复什么。
function onEdit(event) {
// assumes source data in sheets named Laura, Jedsen, Erin, Tim, Hunter
// target sheet of move to named Completed
// test column with completed is col 11 or K
// must create new script when adding in a new writer
var ss = SpreadsheetApp.getActiveSheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Laura" && r.getColumn() == 11 && r.getValue() == "Completed") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName() == "Jedsen" && r.getColumn() == 11 && r.getValue() == "Completed") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName() == "Erin" && r.getColumn() == 11 && r.getValue() == "Completed") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName() == "Hunter" && r.getColumn() == 11 && r.getValue() == "Completed") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName() == "Tim" && r.getColumn() == 11 && r.getValue() == "Completed") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
【问题讨论】:
标签: javascript google-apps-script google-sheets triggers