変更をなるべく最小限にしたうえで、おそらく正しく動くコードは下記になります。
js
1function onEdit() {
2 var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの取得
3
4 var sheet = activeSpreadsheet.getActiveSheet(); // アクティブシートの取得
5
6 var url = activeSpreadsheet.getUrl();// アクティブシートのURL取得
7
8 var mycell = sheet.getActiveCell();//アクティブなセルを取得
9 console.log(mycell.getValue());
10
11 //アクティブなセルが何列目の何処かを判定、11列目に設定
12 if (mycell.getColumn() == 11) {
13
14 if (mycell.getValue() === true) {
15
16 // 送信するテキスト
17 const recipient = '○○○@google.com'; //送信先のメールアドレス
18 const subject = '購入申請確認';//件名
19 const body = `責任者が承認をしました、確認をお願いします。\n ${url}`;//本文
20 GmailApp.sendEmail(recipient, subject, body);
21
22 }
23 }
24}
元のコードとの相違点は下記になります(行頭「-」となっている行は修正前 「+」は追記又は修正後の行)
diff
1+function onEdit() {
2 var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの取得
3
4 var sheet = activeSpreadsheet.getActiveSheet(); // アクティブシートの取得
5
6 var url = activeSpreadsheet.getUrl();// アクティブシートのURL取得
7
8 var mycell = sheet.getActiveCell();//アクティブなセルを取得
9- console.log(mycell);
10+ console.log(mycell.getValue());
11
12 //アクティブなセルが何列目の何処かを判定、11列目に設定
13 if(mycell.getColumn() == 11){
14
15- if(value == true){
16+ if(mycell.getValue() === true){
17
18 // 送信するテキスト
19 const recipient = '○○○@google.com'; //送信先のメールアドレス
20 const subject = '購入申請確認';//件名
21 const body = `責任者が承認をしました、確認をお願いします。\n ${url}`;//本文
22 GmailApp.sendEmail(recipient, subject, body);
23
24 }
25}
26}
・チェックを入れたとき(セルの内容が変更されたとき)に関数が実行されるように、onEdit()という関数の中に処理を定義しています
(onEditという名前の関数でない場合、トリガーを設定することで実現できます)
・「22:55:43 情報 {}」と表示されたのは「sheet.getActiveCell()」で取得したRangeオブジェクトをそのまま表示しようとしたからです。
この場合、アクティブセルの内容を取得するには、getValue()を使用します。(単一のアクティブセルが編集されたという前提)
・ if(value == true){
とすると、valueがどこにも定義されていないのでエラーになります。
mycell.getValue()でチェックボックスの値を取得し、それが trueかどうかを判定する必要があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/28 07:54