前段時間,我聯系了 google 應用程式腳本社區,請求為我的 google 表格電子表格提供自定義腳本的幫助。當使用原始作業簿時,它作業得很好并且符合預期,但是在我上次使用該腳本后的過去幾個月中,發生了一些變化。我在除錯腳本時收到錯誤,這似乎是罪魁禍首。腳本如下:
function onEdit(e){
if(e.value == "TRUE")
e.source.getActiveSheet().getRange(e.range.rowStart,e.range.columnStart 1).setValue(new Date());
else if(e.value == "FALSE")
e.source.getActiveSheet().getRange(e.range.rowStart,e.range.columnStart 1).clearContent();
else return;
}
在除錯時,e.value 中的 VALUE 似乎是導致未定義的問題。第一個 if 引數中的錯誤型別“無法讀取未定義的屬性“值”。我不確定是否還有其他錯誤,但似乎這是唯一的錯誤。
此腳本的目的是輸入相鄰單元格中的復選框被勾選為真的日期。
uj5u.com熱心網友回復:
當您從腳本編輯器(通過單擊“播放”按鈕)運行此代碼時,錯誤是正常的。
如果在電子表格中進行編輯,則會(自動)觸發 onEdit 腳本。該腳本捕獲該編輯(事件)并在腳本中使用該事件物件 (e)。如果您嘗試從腳本編輯器運行該函式,則不會捕獲此類事件(因為未進行編輯),因此該事件的所有屬性都未定義。
如果 onEdit 腳本沒有給您應有的結果,就像我目前正在發生的一些情況一樣,那么您可以設定一個觸發器,在編輯完成時鼓勵腳本運行。
uj5u.com熱心網友回復:
坐在浴缸里用我的手機打字,所以我可能不會完全正確,但它應該足以讓你開始。
當使用像 onEdit 這樣的簡單觸發器時,您可以使用 SpreadsheetApp.toast() 在右下角顯示一個彈出視窗,以查看變數和測驗條件的結果。
嘗試: SpreadsheetApp.toast(e.range.offset(0,1).getA1Notation()) 看看是否讓你得到日期單元格。在這種情況下,您需要: e.range.offset(0,1).setValue(new Date()) 嘗試: SpreadsheetApp.toast(e.value === "TRUE") 看看您的評估是否按預期回傳。
如果您連續使用 2 個吐司,則第二個要蓋住第一個。所以加個延遲。我記得它是 Utilities.delay(1000)
uj5u.com熱心網友回復:
function onEdit(e) {
const sh = e.range.getSheet();
if (sh.getName() == "Your Sheet Name" && e.range.columnstart == 'your check box column') {
if (e.value == "TRUE") {
e.range.offset(0,1).setValue(new Date());
} else if (e.value == "FALSE") {
e.range.offset(0,1).clearContent();
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/389695.html
標籤:谷歌应用程序脚本
