我有一個這樣的自定義函式:
var today = new Date();
var date = (today.getMonth() 1) '-' today.getDate() '-' today.getFullYear();
var time = today.getHours() ":" today.getMinutes() ":" today.getSeconds();
var dateTime = date ' ' time;
return dateTime;
我在 Google Sheet 的單元格中呼叫了上面的函式。但是每次我打開作業表時,所有函式都會重新運行并獲得一個新的時間戳。有沒有辦法防止這種情況?
uj5u.com熱心網友回復:
您可以使用該Sheet.getCurrentCell()方法檢查單元格是否已經有值,如果有,則將其回傳:
function getTimestamp() {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const cell = ss.getActiveSheet().getCurrentCell()
if (cell.getDisplayValue() !== "" && cell.getDisplayValue() !== "Loading...") {
return cell.getDisplayValue()
}
var today = new Date()
var date = (today.getMonth() 1) '-' today.getDate() '-' today.getFullYear()
var time = today.getHours() ":" today.getMinutes() ":" today.getSeconds()
var dateTime = date ' ' time
return dateTime
}
根據Google Sheets 中自定義函式的檔案:
自定義函式可以呼叫某些 Apps 腳本服務來執行更復雜的任務。
和:
電子表格| 只讀(可以使用大多數
get*()方法,但不能set*())。
所以這個想法是這樣的:
- 獲取活動電子表格
- 獲取當前單元格
- 檢查當前單元格是否有值
- 如果是,則回傳該值(即不重新計算),除非該值是“正在加載...”(該函式需要一些時間來計算單元格讀取“正在加載...”期間)
- 如果沒有,計算時間戳并設定它
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416102.html
標籤:
