簡體   English   中英

從 Google 表格中的單元格和范圍檢索到 Apps 腳本后,統一日期格式的最佳方法是什么?

[英]What's the best way to unify date formats after retrieving them from cells and ranges in Google Sheets to Apps Script?

目標:我需要遍歷行並將'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).

迄今為止的研究成果:

  1. 使用 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' ],..

  1. 使用 Utilities.formatDate() - 僅適用於“C2”,即使這樣,console.log 返回的值也比工作表上顯示的值晚 1 天。 我不知道如何使用它來格式化“A2:A”的整個列,因為以同樣的方式執行它只返回了一行,而它應該是整個范圍。

  2. 按照@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

我是一個完整的新手,並且沒有參考資料,所以請,非常感謝您的幫助!

單獨轉換您在紀元中的日期

的價值()

 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM