前提・実現したいこと
プログラミング習ったことのない初心者です。
拙文で申し訳ございませんが、よろしくお願い致します。
Googleスプレッドシート
C列のチェックボックスにチェックしたら、D列に入力された承認者にメールを送信したいです。
※D列はVLOOKUPで、V列に入力された値によって変わるようになっています。
また、チェックボックスにチェックをしたときに、ポップアッポが表示されて「OK」ならメール送信
「キャンセル」ならメールを送信しないようにしたいです。
【シート1】シート名:4月
A B C D
1 □ 承認者1
2 □ 承認者1と承認者2
3 □ 承認者1と承認者2と承認者3
【シート2】シート名:メーリングリスト
A B C
1 承認者1 メアド1
2 承認者2 メアド2
3 承認者3 メアド3
※A列は1〜番号振りしてます
行いたいことは上記に記載している内容ですが、ググってもやりたいことが見つからず
該当ソースコードに記載の内容でどうにかしようとしましたが、できませんでした。。。。。
発生している問題・エラーメッセージ
ネットで拾ったコードをコピペしています。 ポップアップまでは進めるが、メール送信が実行できない(実行の際は、openByIdに、d/以降のURL入れてます) 該当シートにチェックボックスがあると、列、関係なくメール送信の可否のポップアップが起動し「OK」するとメールが飛ぶようになっているため、複数の列にチェックボックスの項目があると、起動してしまう。
該当のソースコード
GoogleAppsScript
1 2function showCheckboxInfo() { 3 var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 4 var myCell = mySheet.getActiveCell(); 5 var rule = myCell.getDataValidation(); 6 if (rule != null) { 7 var criteria = rule.getCriteriaType(); 8 var status = myCell.getValue() 9 if ( criteria == 'CHECKBOX' && status == true) { 10 var row = myCell.getRow(); 11 var result = Browser.msgBox('チェックボックスが押されました。メールを送信しますか?', Browser.Buttons.OK_CANCEL); 12 if(result == 'ok'){ 13 sendMail(row); 14 } else if (result == 'cancel'){ 15 mySheet.getRange(row,11).uncheck(); // チェックを外す 16 } 17 } 18 } 19} 20 21function sendMail(row) { 22 var spreadsheet = SpreadsheetApp.openById("XXXXXXXXXXXX"); 23 var datasheet = spreadsheet.getSheetByName('4月'); 24 25 var name = datasheet.getRange(row, 4).getValue(); 26 var email = datasheet.getRange(row, 5).getValue(); 27 28 var subject = '件名'; 29 var body = name + '様\n \nお疲れ様です。\n下記URLのF列の承認チェックをお願い致します。\n \n自動配信メールのため、返信不可となります。\n \nhttps://docs.google.com/spreadsheets/d/1KoQiNNoaRnFU8Tca3MUCg_sa4HfqFLP1EFEGheqpM2Y/edit#gid=321698442'; 30 31 MailApp.sendEmail(email, subject, body); 32}
試したこと
わからないなりに
マクロの記録で、C列を選択したときのコード(ver myRange = myCell.getRange('B:B').active();)をvar myCellの後ろにつけてみたりしましたが、だめでした。。。。。。
補足情報(FW/ツールのバージョンなど)
Hpのクロームブック使用しています
GoogleChromeOS バージョン: 94.0.4606.114(Official Build) (64 ビット)
あなたの回答
tips
プレビュー