前提・実現したいこと
始めてGASを使って、管理表を作成に挑戦しています。
①ブックの中に複数のシートがあり、特定のシートに作用させたい [onEdit(e)]
②リストのA列にチェックボックスがあり、チェックを入れるとメール通知の確認がでる [onEdit1]
③通知でOKをすると、管理者の元にメールが通知される [onEdit2]
このような動作をする管理表を作成したいと考えております。
発生している問題・エラーメッセージ
実行を押しても、エラーが出てこない為、何が問題なのかわかりません。 初心者がGASを検索して目的に合っていそうなソースを見つけては色々組み込んでた。 という状態です。
該当のソースコード
function onEdit(e) { var edit_sheet_name = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetName(); Logger.log(edit_sheet_name); switch(edit_sheet_name){ case 'テスト': onEdit1(); break; } } function onEdit1() { var ss = SpreadsheetApp.getActive().getSheetByName("テスト"); var rng = ss.getActiveRange(); var flag = rng.getValue(); if(rng.getColumn() == 1 && flag == true){ var popUp = Browser.msgBox("メール送信しますか?",Browser.Buttons.OK_CANCEL); if(popUp == 'OK'){ onEdit2(); } } } function onEdit2() { MailApp.sendEmail("test_mail@gmail.com","件名テスト","本文テスト"); }
試したこと
各関数をそれぞれ実行してみた所、[onEdit1]がずっと実行状態が続く状態になっており、
[onEdit2]だけを実行してみた所、メールは届きました。
onEdit1 が不完全でonEdit2との連携を果たせてないのでは・・と感じるのですが、
答えを見いだせず、こちらにご質問させて頂いた次第です。
ご多忙のところ大変恐縮ではございますが
お知恵を拝借頂けますと幸いです。
何卒宜しくお願い申し上げます。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
「記載のコードで、onEdit(e)を「実行」ボタンを押して実行した場合、実行中状態で進まない」ということだと思いますが
その状態で元のスプレッドシートを表示させたとき、メッセージウィンドウが出ていませんか?
早速にレスポンスありがとうございます。
はい、確かにシートに戻った時、メッセージウィンドウが出ておりました。
つまり、シート上では実行されていた。という事ですかね???
3つの関数はそれぞれ動いていますが、連動ができていない。という事でしょうか。
可能でしたら、この目的を達成する方法をご助言頂けますと幸いです。
仮に、シートに戻った時、メッセージウィンドウが出ている状態で、メッセージウィンドウの「OK」ボタンを押したときに正常にメールが届くならば、
実行ボタンを押さなくても、
スプレッドシートの「テスト」シートのA列にあるチェックボックスにチェックを入れれば、
同様にメッセージウィンドウが出て、OKをおせばメールが届くと思うのですが。
qnoir様 ご返信ありがとうございます。
シートに戻った時、表示されているウィンドウのOKボタンを押しますと、
ウィンドウは消えるのですが、暫く待ってもメールが届かない。。という状態でございます。
回答1件
あなたの回答
tips
プレビュー