我有一列帶有一些復選框。我試圖在選中任何復選框時激活一個宏。我認為這可以通過檢查 ischecked 是否回傳 null 來實作,因為當它們都被檢查時回傳 true ,當沒有時回傳 false 。如果它是兩者的組合,那么結果應該為空,對嗎?相反,即使我取消選中該框,宏現在也可以隨時通過任何編輯激活。
這是它下面的代碼和宏:
function onEdit(e) {
if(SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B4:B15").ischecked == null)
{
copy();
}
};
function copy() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('E2').activate();
spreadsheet.getRange('C2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};
我錯過了什么?當然,用不同的函式得到相同的結果也很好。
這是我為演示創建的測驗表的鏈接:https : //docs.google.com/spreadsheets/d/1k728vBAe4F4zi1M53NwHK6L5RwWG8x6gd71Wnx6u9PE/edit?usp=sharing
謝謝!
uj5u.com熱心網友回復:
試試這個方法:
您應該避免在 onEdit 觸發函式內使用函式呼叫,因為它們需要在 30 秒內完成,并且所有函式呼叫都需要時間。您還應該嘗試利用事件物件中的資料。我知道如果您不使用事件物件,則對功能進行故障排除會更容易,但問題是一切都運行得更慢。
function onEdit(e) {
const sh = e.range.getSheet();
if (sh.getName() == 'Your Sheet Name' && e.range.columnStart == 2 && e.range.rowStart > 3 && e.range.rowStart < 16 && e.value == "TRUE")
sh.getRange('C2').copyTo(sh.getRange('E2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/380436.html
上一篇:我正在使用g-script將條目放入HTML檔案并將該檔案作為電子郵件正文發送。但是HMTL檔案無法讀取我存盤值的陣列
