実現したいこと
GASでメール送信機能を作成したい。
前提
GASで予約表を作っています。
Googleフォームから名前、貸出希望日を入力して送信後、スプレッドシートにフォームで入力したデータが入るようになっています。
スプレッドシートの一番右の列(G列)に承認or却下のプルダウンがあり、どちらかを選択すると
メールが送信される処理を作成ているのですが、権限がないとエラーが出力されます。
発生している問題・エラーメッセージ
メール送信後に発生するエラーメッセージです。
Exception: MailApp.sendEmail を呼び出す権限がありません。必要な権限: https://www.googleapis.com/auth/script.send_mail
該当のソースコード
メール.gs
function onEdit(e) { var editedSheet = e.range.getSheet(); // 変更が行われたシート var editedRange = e.range; // 変更が行われた範囲 var targetSheetName = "予約表"; // Switch予約表のシート名 var targetColumn = 6; // 6はE列を表します // Switch予約表のE列内の変更を監視 if (editedSheet.getName() === targetSheetName && editedRange.getColumn() === targetColumn) { // Browser.msgBox('成功'); let editedRow = editedRange.getRow(); // 変更があった行番号 var name = editedSheet.getRange("B" + editedRow).getDisplayValue(); // 名前 var rentalDay = editedSheet.getRange("C" + editedRow).getDisplayValue(); // 貸出日 var mailAddress = editedSheet.getRange("E" + editedRow).getDisplayValue(); // メールアドレス var oldValue = e.oldValue; // 変更前の値を取得 var editedValue = e.value; // 変更後の値を取得 if (editedValue=='承認') { var msg = Browser.msgBox("名前:"+name+"\\n貸出日:"+rentalDay+"\\nこちらの予約を承認しますか?", Browser.Buttons.YES_NO); if (msg=="yes") { try { MailApp.sendEmail(mailAddress, '予約完了のお知らせ', rentalDay+"の予約が承認されました"); Browser.msgBox('送信しました'); } catch(error) { console.log(error.name + ": " + error.message); console.log(mailAddress); console.log(rentalDay); } } } else if (editedValue=='却下') { var msg = Browser.inputBox("名前:"+name+"\\n貸出日:"+rentalDay+"\\nこちらの予約を却下しますか?", Browser.Buttons.YES_NO); if (msg) { try { MailApp.sendEmail(mailAddress, '予約却下のお知らせ', rentalDay+'の予約が却下されました。\\n却下理由:'+msg); Browser.msgBox('送信しました'); } catch(error) { console.log(error.name + ": " + error.message); console.log(mailAddress); console.log(rentalDay); console.log(msg); } } } } else { Browser.msgBox('エラー'); } }
appsscript.json
{ "timeZone": "Asia/Tokyo", "oauthScopes": [ "https://www.googleapis.com/auth/gmail.send", "https://www.googleapis.com/auth/gmail.compose", "https://www.googleapis.com/auth/gmail.modify", "https://mail.google.com/", "https://www.googleapis.com/auth/gmail.addons.current.action.compose", "https://www.googleapis.com/auth/script.send_mail" ], "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8" }
試したこと
https://qiita.com/hisayuki/items/725110707d8abc8796d8
https://nolyc.net/programming/gas-manifest/
https://imabari.hateblo.jp/entry/2018/10/27/173641
上記のサイトでもあるように
・"https://www.googleapis.com/auth/script.send_mail"
・"https://www.googleapis.com/auth/gmail.send",
をjsonファイルの"oauthScopes"に追加し、その後トリガーを削除→再登録しました。
また権限も付与されていることを確認ずみです。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー