前提
GAS
PC:Mac Book Air
実現したいこと
スプレッドシートに特定の列の日付の変更があったときに、Slackに通知する。
1.スプレッドシートの日付データを上書き
日付データがある列を更新
ex)セルB5
2022/12/01→2022/12/10
↓
2.slackに変更前後の日付を通知
ex)Slackにて
[BOT] 日付が変更されました 更新前2022/12/01 ↓ 更新後2022/12/10
発生している問題・エラーメッセージ
スプレッドシートから取得できるデータが、シリアル値でしか入手できないため、それをdate型に変更しないといけない。
その方法がうまくいきません。
Utilities.formatDate(更新前データ, 'JST', 'yyyy-MM-dd');
を利用しているためdate型で欲しいです。
※他に方法があるならそれでも良いです
※ スプレッドシート上でを文字列データの列を作ることは可能なのですが、したくないです。
理由:スプレッドシートに列の追加が社内運用上難しいため。
※ スプレッドシートは日付データになっておりますがシリアル値で帰ってきます。
該当のソースコード
1function onEdit(e) { 2 let activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシート(book) 3 let activeSheet = activeSpreadsheet.getSheetByName("テスト"); // アクティブシート(sheet) 4 5 let activeCell = activeSheet.getActiveCell(); // アクティブセル 6 let _newValue = activeCell.getValue(); // 更新後の値 7 let newValue = Utilities.formatDate(_newValue, 'JST', 'yyyy-MM-dd'); 8 console.log(newValue) // 結果:2022-12-13 9 let _oldValue = e.oldValue; // 変更前のアクティブセルの値 10 console.log(_oldValue) // 444906 11 console.log(typeof _oldValue) // string
試したこと
こちらをためしたのですが、うまくいかずでした。
うまくいくメソッド、そもそもスプレッドシートの旧データをシリアル値以外で取得できればベストです。
> こちらをためしたのですが、うまくいかずでした。
うまくいかなかったコードをご提示いただければ、原因が究明できるかもです。

回答1件
あなたの回答
tips
プレビュー