spreadsheetに変更が合った場合に、その変更前と変更後の値の差分をメールで通知するような機能を作りたいです。
変更時にトリガーを設定しているので、変更後の値は取得できるのですが、変更前の値の取得の仕方がわかりません。
ちなみに、対象のセルには数式が入っているため、数式が反映されている値を取得したいです。
コードは以下のようになっております。
G列の変更の差分をとり、old
という変数にし、差分をgap
という変数に入れたいです。
どうぞよろしくお願いします!
GAS
1'use strict'; 2function sendNotification() { 3 const ss = SpreadsheetApp.getActiveSpreadsheet(); 4 //const sheet = ss.getActiveSheet(); 5 const sheet = ss.getSheetByName("売上_4月"); 6 const cell = ss.getActiveCell().getA1Notation(); 7 const columnNameInAlphabet = cell.replace(/\d+/,''); 8 9 const status = { 10 'H': '発注書有り', 11 'I': '発注書無し', 12 'J': 'HIGH', 13 'K': 'LOW', 14 'L': 'リスクあり' 15 }; 16 //const old = sheet.getRange('G'+ sheet.getActiveCell().getRowIndex()).getValue(); 17 const anken = sheet.getRange('B'+ sheet.getActiveCell().getRowIndex()).getValue(); 18 const value = sheet.getRange("G"+ sheet.getActiveCell().getRowIndex()).getValue(); 19 const gap = old - value 20 //Logger.log(old) 21 Logger.log(value) 22 23 const subject = '【金額の更新】'+ss.getName()+sheet.getName()+anken; 24 const body = anken + 'の行が更新されました。\n' + ss.getUrl() + '\n更新対象は' + gap +'です。'; 25 const recipientsTO = "xxxxxxxxxxxx@gmail.com" + "," + "xxxxxxxxxxxxx@gmail.com"; 26 27if (columnNameInAlphabet in status == true){ 28 MailApp.sendEmail(recipientsTO, subject, body); 29 } 30};
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/15 00:54
2021/04/15 01:21 編集
2021/04/15 03:34
2021/04/15 03:53
2021/04/20 09:15