我已經通過論壇搜索幾次,我沒能回答出蘇斯我的問題。類型錯誤:無法讀取屬性的「源」從不確定
我使用谷歌表來跟蹤我的團隊項目進度。我目前有5個用戶,每個用戶都有自己的選項卡,另外還有三個額外的選項卡,這些選項卡旨在爲除我自身以外的任何用戶提供動態響應。
爲了使這個跟蹤器好用,我實現了一個onEdit腳本移動這是一個從用戶的選項卡上的「完成」選項卡中自動標記「已完成」的任何項目。
腳本工作得很好我測試了它的最初幾次,但我現在遇到這個錯誤:
TypeError: Cannot read property "source" from undefined. (line 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);
}
}
謝謝魯本!看起來我的腳本現在運行得很好。 –
@LauraMantzoros:謝謝你讓我知道。如果您發現自己如何修復腳本,請將您的解決方案作爲答案發布。 –