我有一個獲取電子表格值的陣列變數
我想檢查一些單元格是否為空,所以我查看了陣列中每個元素的長度
但令我驚訝的是,如果元素是日期,則長度回傳“null”。它不應該回傳日期的完整長度嗎?(例如 Wed Dec 01 03:00:00 GMT-05:00 2021 應該回傳 34)
有人可以向我解釋這種行為嗎?
這是我使用的代碼:
在我的表格中,單元格 I1 是日期,單元格 J1 是空的
var sheet = SpreadsheetApp.getActive().getSheetByName('Example');
var tab = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues();
Logger.log(tab[0][8]);
Logger.log(tab[0][8].length);
Logger.log(tab[0][9]);
Logger.log(tab[0][9].length);
這個回報:
1:28:09 PM Notice Execution started
1:28:15 PM Info Wed Dec 01 03:00:00 GMT-05:00 2021
1:28:17 PM Info null
1:28:18 PM Info
1:28:19 PM Info 0.0
uj5u.com熱心網友回復:
只有 Google Apps 腳本產品工程師才能回答原因,但基于https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date長度不是 Date 物件的屬性。
當使用Logger.log或console.log將任何物件列印到 IDE 執行日志時,他們會嘗試根據設定的規則將該物件轉換為字串,但 Google Apps 腳本檔案沒有提供非字串時將顯示的內容的詳細資訊通過了。正如您在底部看到的,每種方法都有不同的結果,Logger.log 顯示與使用相同的結果,Date.prototype.toString()同時console.log列印包含 IATA 時區名稱的日期時間。
JSON.stringify并且Utilities.formatDate是將日期物件格式化為字串的方法,都適用于舊運行時和新運行時。使用默認運行時 (V8) 時,您可能還可以使用其他 Date 屬性,例如其他屬性Date.prototype.toDateString。
請記住,這Date.prototype.toLocaleString將在用戶計算機上回傳基于服務器的結果。
使用 Google 表格時,請記住,它處理日期值的方式與 JavaScript 不同。使用 getValue / getValues 時,Google Apps 腳本會根據電子表格時區將電子表格日期轉換為 JavaScript 日期物件。另一方面 getDisplayValue / getDisplyVALues 將單元格顯示的值作為字串回傳。您可以使用數字格式選項來格式化具有某些限制的日期,例如無法顯示時區,因為電子表格日期不直接包含它。
function myFunction() {
const date = new Date();
Logger.log(date);
Logger.log(date.length);
console.log(date);
console.log(date.length);
}
10:39:27 AM Notice Execution started
10:39:27 AM Info Thu Mar 03 11:39:27 GMT-05:00 2022
10:39:27 AM Info null
10:39:27 AM Info Thu Mar 03 2022 11:39:27 GMT-0500 (Eastern Standard Time)
10:39:27 AM Info undefined
10:39:27 AM Notice Execution completed
參考
- https://developers.google.com/apps-script/reference/base/logger#log(Object)
- https://developers.google.com/apps-script/reference/base/console#log
uj5u.com熱心網友回復:
根據評論,我們可以編輯代碼并使用兩種替代方法來轉換字串并避免空值。
var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
//var tab = sheet.getRange(1, 1, sheet.getLastRow()-1, sheet.getLastColumn()-1).getValues();
var tab = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).getDisplayValues();
var date = new Date(tab[0][8]);
var date2 = date.toString();
Logger.log(tab[0][8]);
Logger.log(tab[0][8].length);
Logger.log(tab[0][9]);
Logger.log(tab[0][9].length);
Logger.log(date2.length)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/438199.html
標籤:javascript 约会时间 谷歌应用脚本 谷歌表格
下一篇:如何檢查資料時間是否有時區偏移?
