目標:我需要遍歷行并將列'A2:A'中的值與單元格'C2'匹配,然后console.log僅從列中匹配值。
問題: “C2”和“A2:A”中的值在 Google 表格中設定為“MM/dd/yyyy”格式。但是,當我嘗試通過 Apps 腳本檢索它們時, sheet1.getRange('C2).getValue() 似乎回傳的日期格式與 sheet2.getRange('A2:A').getValues() 不同(參見代碼段注釋),所以'if'陳述句找不到任何匹配的值。
我需要幫助:在檢索值后提出統一日期格式的最佳方法,以便“if”陳述句可以識別它們并驗證條件。
片段:
function matchDates() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var database = ss.getSheetByName("Database");
var form = ss.getSheetByName("Form");
var formDate = form.getRange("C2").getValue(); // Console.log returns: 'Fri Jan 07 2022 12:00:00 GMT-0500 (Eastern Standard Time)'
var dbDate = database.getRange("A2:A").getValues(); // Console.log returns: [ Sat Jan 08 2022 12:00:00 GMT-0500 (Eastern Standard Time) ],[ Fri Jan 07 2022 12:00:00 GMT-0500 (Eastern Standard Time) ],..
for(let i = dbDate.length - 1 ; i >= 0 ; i--){
if(dbDate[i] == formDate){
console.log(i 1,dbDate[i]) // Console.log all rows in 'Date' column of 'Database' sheet that match the value stored in formDate
}
}
}
// Console.log this whole function returns nothing because the 'if' statement cannot find any matching dates (due to the stated problem).
迄今為止的研究成果:
- 使用 getDisplayValue() 而不是 getValue() - 仍然不適用于“if”陳述句。從'C2'檢索的顯示值與'A2:A'不同,與陣列維度有關(紅色某處但丟失了參考),如下所示;
var formDate = form.getRange('C2').getDisplayValue(); // Console.log returns 1/8/2022
var dbDate = database.getRange('A2:A').getDisplayValues(); // Console.log returns [ '1/8/2022' ],[ '1/7/2022' ],..
使用 Utilities.formatDate() - 僅適用于“C2”,即使這樣,console.log 回傳的值也比作業表上顯示的值晚 1 天。我不知道如何使用它來格式化“A2:A”的整個列,因為以同樣的方式執行它只回傳了一行,而它應該是整個范圍。
按照@Cooper 在評論中的建議使用 new Date() 。同樣,適用于“C2”,但不適用于“A2:A”。片段;
var formDate = new Date(form.getRange("C2").getValue()).valueOf(); // Returns the date in this format : 1641574800000
var dbDate = new Date(database.getRange("A2:A").getValues()).valueOf(); //Returns NaN
我是一個完整的新手,并且沒有參考資料,所以請,非常感謝您的幫助!
uj5u.com熱心網友回復:
單獨轉換您在紀元中的日期
的價值()
var dbDate = [[ 'Sat Jan 08 2022 12:00:00 GMT-0500 (Eastern Standard Time)' ],[ 'Fri Jan 07 2022 12:00:00 GMT-0500 (Eastern Standard Time)' ]]
var dbDateEpoch = []
dbDate.forEach(function(d){
dbDateEpoch.push(new Date(d).valueOf().toString())
})
console.log(dbDateEpoch)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409554.html
標籤:
