我有一個基于編輯運行的腳本,它的觸發器是可安裝的。當它運行時,它將一行復制到另一個檔案中。如果由于某種原因沒有通過,我希望彈出一條錯誤訊息,以便用戶知道它需要額外注意。
現在,我在執行日志中看到的錯誤表明它正在嘗試編輯目標作業表中的受保護范圍。我已try...catch按如下方式添加此內容,但沒有彈出任何內容。
function myfunction(e) {
try {
const startRow = 2;
const targetColumn = 11;
const ws = "Data"
//get modified row and column
const row = e.range.getRow();
const col = e.range.getColumn();
const s = e.source.getActiveSheet();
const cellValue = s.getActiveCell().getValue();
const salesPapeline = e.source.getActiveSheet().getRange(row, 1).getValue();
const branch = e.source.getActiveSheet().getRange(row, 13).getValue();
if (e.source.getActiveSheet().getName() === ws && col === 2 && row >= startRow) {
const timeStamp = new Date();
//This checks if the Job/Lead is to be transferred to Branch 2
if (salesPapeline == "4. Convert" && cellValue == "2. Branch 2"
&& e.source.getActiveSheet().getRange(row, 12).getValue() == "TRANSFERRED") {
const jobTagValue = e.source.getActiveSheet().getRange(row, 11).getValue();
let rowData = e.source.getActiveSheet().getRange(row, 1, 1, 12).getValues();
let newItems = [];
let jobTag = rowData[0][10];
let name = rowData[0][3];
let company = rowData[0][4];
let clientNotes = rowData[0][7];
let startDate = rowData[0][9];
newItems.push(jobTag, '3. Current needs', '', name, '', company, clientNotes, '', '', '', '', '', startDate)
e.source.getActiveSheet().getRange(row, 12).setValue('TRANSFERRED');
e.source.getActiveSheet().getRange(row, 13).setValue('2. Branch 2');
const salesSheet = SpreadsheetApp.openById(BRANCH2_FILE_ID);
const destSheet = salesSheet.getSheetByName('[MGT-use] Recruiting Funnel');
if (newItems.length > 0) {
const destRng = destSheet.getRange(destSheet.getLastRow() 1, 1, 1, 13);
destRng.setValues([newItems]);
} else {
return;
}
}
}
} catch (e1) {
SpreadsheetApp.getUi().alert(e1.message);
}
}
這是觸發器設定的螢屏截圖:

uj5u.com熱心網友回復:
觸發器以onEdit()靜默方式處理錯誤。您只能在 Executions 部分查看錯誤訊息(和日志):

對于除錯,console.log()您可以使用該spreadsheet.toast()工具代替(或連同):
- 吐司(味精)
uj5u.com熱心網友回復:
這將檢查寫入的范圍以查看它是否為空白
如果我們需要進一步進入該程序,我還在那里放置了一些除錯標志。但我并沒有真正看到它有什么問題,只是您可以更好地利用事件物件并減少執行時間。
function myfunction(e) {
e.source.toast('entry');
try {
const sh = e.range.getSheet();
if (sh.getName() == "Data" && e.range.columnStart == 2 && e.range.rowStart >= 2) {
e.source.toast('Flag1');
const r = sh.getRange(e.range.rowStart, 1, 1, 12).getValues().flat();
if (r[0] == "4. Convert" && e.value == "2. Branch 2" && r[11] == "TRANSFERRED") {
e.source.toast('Flag2');
let newItems = [];
newItems.push(r[11], '3. Current needs', '', r[3], '', r[4], r[7], '', '', '', '', '', r[9]);
sh.getRange(e.range.rowStart, 12).setValue('TRANSFERRED');
sh.getRange(e.range.rowStart, 13).setValue('2. Branch 2');
const ssh = SpreadsheetApp.openById(BRANCH2_FILE_ID);
const dsh = ssh.getSheetByName('[MGT-use] Recruiting Funnel');
if (newItems.length > 0) {
e.source.toast('Flag3');
const wr = dsh.getLastRow() 1
const drg = dsh.getRange(wr, 1, 1, 13);
drg.setValues([newItems]);
SpreadsheetApp.flush();
if(drg.isBlank()) {
SpreadsheetApp.getUi().alert("It did not go through");//warns you if the row that you just wrote to is blank.
}
}
}
}
} catch (e) {
console.log(e.message);
}
}
如果您希望在表格中共享一些資料,我不介意查看它。您可能還需要解釋作業表的作業原理。
注意:我不關注其他谷歌帳戶的鏈接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407252.html
標籤:
