前提・実現したいこと
プログラミング初心者です。
誤った表現等ありましたらすみません。
GASでGoogleスプレッドシートの表Aを別シートのテーブルA’に転記する処理を組んでいます。
表A:20×5程度の表。一日ひとつ作成する。
↓GASで自動転記
テーブルA':日付をキーに表Aの内容を横持ちで保持するテーブル。1日1レコード追加されていくイメージ。
この中で、
「本日の日付と同日の日付がテーブルA'の日付カラム上になければ、テーブルA'新たにレコードを追加する。
あれば、そのレコードの内容を上書きする」という処理を組みたいのですが、
「本日の日付と同日の日付がテーブルA'の日付カラム上になければ」の条件分岐の部分で詰まっております。
本日の日付もテーブルA'の日付カラムの情報も、どちらも日付型なので、このままでは比較ができないということで、別の型に変換しようと思っているのですが、それが上手くいきません。
発生している問題・エラーメッセージ
テーブルA'の日付カラムの情報(日付型が格納された2次元配列)を、すべてyyyy/MM/ddの形式に変換したいが、変換されず、日付型のまま値が返ってくる。
テーブルA'日付カラムには、
2021/08/23,...,2021/08/31 が記載されている。
[ Mon Aug 23 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Tue Aug 24 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Wed Aug 25 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Thu Aug 26 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Fri Aug 27 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Sat Aug 28 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Sun Aug 29 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Mon Aug 30 2021 00:00:00 GMT+0900 (Japan Standard Time) ], [ Tue Aug 31 2021 00:00:00 GMT+0900 (Japan Standard Time) ]
該当のソースコード
Javascript
1 2function postDb() { 3 //処理に使用するシート・セルを取得 4 const ss = SpreadsheetApp.getActiveSpreadsheet(); 5 const input = ss.getSheetByName('Input'); //表A 6 const table = ss.getSheetByName('Table'); //テーブルA' 7 8 // 本日日付を取得 9 let today = new Date(); 10 today.setHours(0,0,0,0); //時、分、秒、ミリ秒を0にならす 11 today = Utilities.formatDate(today, 'JST', 'yyyy/MM/dd') //yyyy/MM/dd方式に変換 12 13 //テーブルA'内の日付カラムの情報をyyyy/MM/ddに変換する 14 let date = table.getRange(2,1,table.getLastRow()-1).getValues(); //日付カラム2行目から最終行まで取得 15 //date配列内の要素をmap関数で1つずつ変換する。 16 for(let i=0; i<date.lengh; i++){ 17 let dt = date[i].map( 18 function(x){ 19 return x = Utilities.formatDate(x, 'JST', 'yyyy/MM/dd'); 20 }); 21 date[i] = dt; 22 } 23 console.log(date) 24}
試したこと
date[i]をdate[i][0]にするなどしてみましたが意味ありませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。