正直、自分でも「何、言ってんだろう」と思うほど複雑です。。 Google Apps Scriptの中で地味ながら、その活用の幅が実に広いものとして、スクリプトトリガーがあります。いわゆる時限式で作動させるための仕組みなのですが、スクリプトトリガーは、スクリプトエディタの画面から入り、手動で登録するのが通常のフローです。しかし、「スクリプト内でテンポラリで時間トリガーを設置したい」であったり「トリガーの設置し直し」など、スクリプトエディタにいちいち入らず設定したいシーンがボチボチあります。そういった場合には、スクリプトからトリガーの設置や削除が出来ると便利です。二重に登録してしまったりすると、二回発動したり、片方しか発動しなかったりするので、慎重に設置をしましょう。, これらトリガーは大きく分けて4種類あり、1.時限作動式 2.開いた時 3.編集時 4.フォーム送信時を設置することが可能です。主に使うのは時限作動式と、フォーム送信時の2つになります。但し、このスクリプトトリガーはちょっと癖があるので、そこだけは注意しとかなければなりません。. この記事では、 「Google Apps Scriptを自動実行したい」 「トリガーってどうやって使うの?」 といった方に向けて、GASのトリガーについて詳しく解説します。, トリガーとは、Google Apps Scriptで作成した処理を、特定の条件のときに自動で実行する仕組みです。, 例えば、 フォームが送信されたときに〇〇を実行 スプレッドシートを開いたときに〇〇を実行 というようなことができます。, プロジェクトを作成すると特に設定せずとも使えるようになっているSimple triggersと、 自分で実行内容を設定するInstallable triggersです。, Installable triggersは、 Simple triggersの上位互換みたいなものなので、Installable triggersを使っておけばだいたいOKです。, Installable triggersには以下のものがあります。 Time-drivenを除くと、それぞれ、プロジェクトが紐づくスプレッドシートやフォームで特定の操作が行われたときに発動します。, こんな感じのコードを書いてスプレッドシートの「変更時」トリガーで実行する関数として登録すれば、内容変更時にその時の日時が書き込まれるようになります。, また、トリガーで実行する関数には、そのトリガーのイベント情報(Event Objects)が引数として渡されますので、それをスクリプトの中で使うこともできます。, 「フォームの送信時に回答内容をメール送信したい・・・!」みたいな時に使うことになります。, https://developers.google.com/apps-script/guides/triggers/events, こちらの記事で、イベントオブジェクトを使ってメール送信するスクリプトの作り方を紹介しています。, スクリプトエディタの「編集」→「現在のプロジェクトのトリガー」をクリックすると、トリガーの一覧画面が開きます。, イベントのソース、イベントの種類、実行する関数を選択して保存を押します。(その他の項目は基本的にデフォルトでOKです), 初回の設定時には、「このアプリは確認されていません」といったエラーが出ますので、「詳細」→「〜〜〜(安全では無いページ)に移動」をクリックして実行を許可する必要があります。, GASはやろうと思えばGoogleアカウントを使ったいろいろができてしまうので、セキュリティのためにプロジェクトごとに実行を許可する必要があるんですね。, 【Selenium】ログインしてデータをcsvに書き出す【BeautifulSoup】. ‘. narugaroさんのおかげで、困っていたGoogleフォームの自動返信メールの問題が解決できました! たまに、もーさんが登場します。, Facebook で共有するにはクリックしてください (新しいウィンドウで開きます), iPhone5sからiPhone6sに機種変更した時にLINEのトーク履歴を引き継いだお話, 商品詳細ページのように、サムネイル画像をクリックしたらメイン画像が変わる画像ビューアーをjQueryで作ってみた, Google AdSense から「広告配信を制限しました」というメールがきました, 【山口展】特別展「奇才 -江戸絵画の冒険者たち-」-行ってきた(山口県立美術館にて), 【PAYSAN(ペイザン)】行ってみた~山口県山口市阿知須にあるイタリアン料理店~, GoogleフォームでGoogle Apps Scriptを使って自動メール送信機能のついたお問合せフォームを作成してみた. トリガーとは、Google Apps Scriptで作成した処理を、特定の条件のときに自動で実行する仕組みです。 例えば、 フォームが送信されたときに〇〇を実行 スプレッドシートを開いたときに〇〇を実行 というようなことができます。 スプレッドシートでは、時間ベーストリガーの他にも、スプレッドシート特有のトリガーを設置する事が出来ます。使用することの出来る特有のトリガーは、「onChange」、「onEdit」、「onFormSubmit」、「onOpen」の合計4つとなります。それぞれ、「変更時」「編集時」「フォー … 今回はGoogle Apps ScriptとPhantomJS Cloudでスクレイピングします!, 「初心者でもわかるGoogle Apps Scriptのクラス」をテーマに、その使い方と便利さについてお伝えしていきます。今回は、GASでクラスを理解するためのオブジェクトの基礎知識についてお伝えしていきます。, 「初心者でもわかるGoogle Apps Scriptでクラスを作ろう!」をシリーズでお送りしております。今回は、Google Apps Scriptのクラスでプライベートプロパティを作成する方法です。, Google Apps Scriptで営業日のみトリガーを作成する方法をお伝えします。Googleカレンダーにデフォルトである祝日のカレンダーを使用する方法と、会社独自の営業日に対応する方法をお伝えします。, ブログの低品質コンテンツを自動であぶり出すシステムを作成しています。今回はGoogle Apps Scriptで数式を入力する方法とR1C1形式についてお伝えしつつ、システムを完成させたいと思います。, Windowsのポチポチ業務を爆速化するPowerShell、日付を操るDatetime型, 当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。, マネーフォワードクラウド請求書の請求書一覧の全件をスプレッドシートに書き出すスクリプト, GASでマネーフォワードクラウド請求書の請求書一覧をスプレッドシートに書き出す方法. 原因は、たぶん色々なGoogleアカウントを使っていたからトリガーが曖昧になってしまった、ことでしょうか。 を その為、理想を言うと、質問と質問の間は改行されたほうが、メールを受け取った側は見やすいかなと。。 ‘ プログラミングの知識が乏しいまま探していたので、、本当に助かりました。 わたしも、その現象に悩まされています。解明する時間がなく、放置していますが時間が取れ次第、調査します。, これ、これ! GoogleフォームでGoogle Apps Scriptを使って自動メール送信機能のついたお問合せフォームを作成してみた 2016年2月26日 2020年1月23日 ちゃんなる Web制作 さくっとお問合せフォームを作りたい時に。 本当にありがとうございました。, こんにちは! まさに理想が現実に変わった瞬間でした! こちらは var question = itemResponse.getItem().getTitle(); 現在、フォームに入力されたアンケート結果の内容が、指定したgmailに送信されているのですが、 上部に、以下の記述を追加します。 これは毎回異なりますが、選択肢としては10人程度なので、 Googleフォームの回答を取得して、Google Apps Script(GAS)でデータの変換やslack送信などをすることができる。 その際のデータの取得方法は何通りかあるものの、私自身GASに触れ始めた頃に迷った記憶があるため、この記事にまとめていく。 fromにメールの送信元アドレス どうかご教示を宜しくお願いします!, すみません、コードが消えてしまっていたので、改行コードを書き直しました。 nameは送信元の名前。, スクリプトエディタのメニュー「リソース」から、「現在のプロジェクトのトリガー」をクリック。, 上の設定部分で、送信元fromを設定していましたが、これがデフォルトじゃできないんです。, デフォルトでは、送信元はそのGoogleフォームを作成したGoogleアカウントのメールアドレスになります。, それでいいって人はそのままでもいいんですが、Gmailアドレスバレるの嫌だから変更したいよって場合!, 送信サーバーと、パスワードを入力して次へ!(うまくいかない時はプロパイダのメール設定を見てね。), 2016年11月7日追記 どうぞご教示くださいませ!!, 送信されるメールのFROMをユーザー様が入力したメールアドレスにすることは可能ですか?? でも、携帯アドレスでは受信出来ません。 GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~, VBAやGoogle Apps Scriptのツール開発と研修をセットで依頼される企業が増えている理由. 「本当にありがとうございます!」 という改行コードを入れれば、改行されます(^^)v, こんにちは。 おそらく公開していないことが原因だと思われますが。。, お問い合わせが来たら自分のメールアドレスにくる仕掛けは自分のメールアドレスがOCNでもできるのでしょうか?, こちらも、、1年以上も前にコメントを頂いていたのに気づかずに申し訳ありません。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; よくわからないのですが(すみません)、トリガーを消して、新しく作り変えて、スクリプトの「実行」をしてから(ここでエラーが出るけど気にしない)、送信してみたところ、動くようになりました。, お返事ありがとうございます「エラー出ても無視」で動きました!ありがとうございます!, TypeError: undefined からプロパティ「response」を読み取れません。(行 2、ファイル「コード」) 【GAS入門】フォームの回答があったらメール通知するスクリプトを作ってみよう. Google Apps Scriptでフォーム送信時にメッセージを送るスクリプトの作り方, Google Apps Scriptで特定のURLを踏んだらスクリプトを動作させるdoGet関数の使い方, 詳解! 記述式あるいはプルダウンやラジオボタンを想定しています。, 最悪、回答者へのリターンは無くてもOKなのですが。。 var itemResponses = e.response.getItemResponses(); ちなみに私が作成したフォームは質問1から質問10まであるので、結構長いです。 Googleフォームが便利です。もともとはアンケートフォームなのですが、Google Apps Scriptを使うことによって自動メール送信も可能。, 1ページのランディングページしかないサイトとか、ちょっと申し込みフォームが必要な時とか・・・使える!, 上記の手順までで、フォームとして完結できるのですが、いちいちGoogleフォームにアクセスして「回答」をチェックしなくちゃいけません。。, 締切を決めているアンケートとかだったら、それで良いのですが、こちとらお問合せフォームを作りたいわけなので、気まぐれ返信ではいけませんよね!, そこで、フォームにお問合せが送信されたら、メールを自動で飛ばすようにしたいと思います〜。, 管理者宛メールの送信先はaddress:kanrisha@example.com c.getElementById(a)||(d=c.createElement(f),d.src=g, (i + 1).toString() + bccで他のアドレスにも送りたい時:bcc@example.com ||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)}; そして下部に報告メール用の送信設定を作成し、sendEmailの部分で先ほど取得した「report」を使います。 今回はGoogle Apps Scriptを使って、Googleフォームに回答が来たら、メールを送信するスクリプトを作ってみます。, 右上の・・・から、「スクリプトエディタ」をクリックして、コードを書いていきましょう。, プロジェクトの名前を聞かれたら、フォームに付けた名前と同じのを入力して、OKを押します。, Logger.logっていうのは、GASに用意されているLoggerっていうクラスのlogメソッドを実行しているんですが、, 何が起こるかというと、メニューの「表示」→「ログ」を押したときに出る画面に出てくるんですね。, この関数が実行されたら、ログに’フォームが送信されたぞ’と書かれる、っていう単純なスクリプトを書きました。, 新規タブでトリガー設定画面が出るので、右下にある「トリガーを追加」をクリックします。, 何やら選択項目がいろいろ出てくるのですが、左下の「イベントの種類を選択」を「フォーム送信時」にしてOKを押せばOKです。, 「実行する関数を選択」は、コードに書いたfunctionのどれを実行するか選択するものです。今回はonFormSubmitしか書いてないので、それが選択されています。, 「実行するデプロイを選択」は、使ったこと無いのですが、多分ソースコードをバージョン管理してたら、どのバージョン使いますか、的なことだと思います。Headを選んどけば問題ないはずです。, 「イベントのソースを選択」は、「トリガーを実行する元は何か?」を設定します。今回はフォーム送信時のイベントで実行したいので「フォームから」を選択します。, 「イベントの種類を選択」では、「『イベントのソース』が何したとき?」を選択します。, 「エラー通知設定」はですね、、スクリプトでエラーが発生した場合にエラー内容をメールで送ってくれる機能ですね。, 正直「『通知を受け取らない』は無いんかい!」と思うんですが、今のとこ無いみたいですね。, とりあえず「毎日通知を受け取る」にしておいて、メールが来たら「ああ、あれか。」と思うことにしましょう。, GASでメールを送信するには、GmailAppというクラスのsendEmail関数を使います。, GmailAppクラスを使うときは、セキュリティ対策のため、改めて実行の許可をしてやる必要があります。, もう一度メニューから「編集」→「現在のプロジェクトのトリガー」をクリックして、そのまま「保存」をクリックします。, 今まで放置してたんですが、トリガーで実行される関数の引数(e)には、Eventオブジェクトというものが渡されます。, Eventオブジェクトの中には、トリガーが発生したときの色々な情報がセットされています。, 「フォーム送信時」のトリガーにより渡されるeventオブジェクトには、フォームの回答などの情報が入ってくるので、ここから必要な情報を取り出してやれば良いです。, 次のようにすると、質問と回答がセットで入っている、ItemResponceというクラスのオブジェクトの配列が取れます。, どうもスクリプトの中で対象となるフォームを特定しなきゃいけないみたいで、コードの一番始めに、, と書く必要があります。書かないとEventオブジェクトからresponseのプロパティにアクセスできません。, 参考: Googleフォームのスクリプトの新しいトリガー設定画面でトリガー設定すると、イベントがうまく渡らなくなりました。今までのスクリプトは使えなくなったのでしょうか?, と行きたいとこなんですが、FormAppクラスを使うときは、セキュリティ対策のため、改めて実行の許可をしてやる必要があります。, メニューの「表示」→「ログ」を開くと、フォームに入力した内容が取得できていることが確認できましたね。, e.source.getTitle()がうまくいかない場合は一度フォームのタイトルを変更してみてください。, Googleフォームのスクリプトの新しいトリガー設定画面でトリガー設定すると、イベントがうまく渡らなくなりました。今までのスクリプトは使えなくなったのでしょうか?, 【Selenium】ログインしてデータをcsvに書き出す【BeautifulSoup】. (adsbygoogle = window.adsbygoogle || []).push({}); の5本が、毎日設置され直されて継続していくわけです。こうすることで、非常に柔軟性のあるトリガーを設置して細かく挙動をコントロールすることが可能になります。, 日付と時刻指定トリガーを3つ設置する(本日の10:00, 本日の10:30, 本日の11:00), Google Apps Scriptで座席表を作ろう – ライブラリ編 officeの杜, これらのトリガーは、すべて±15分のラグを持って作動するようなので、分単位での綿密なトリガー作動は期待してはいけません。, 時間ベーストリガーの場合、SpreadsheetAppなどを使う時にはOpenByIdを利用するようにしましょう。, 同様の理由でgetuiなども無意味ですのでメッセージボックス関係などのコードは外しておきましょう。, データは洗い替えで収集するので、毎回データ取得前には、データをクリアする必要性がある。(clearsheet関数を作成), 取得したデータに対してFilterでフィルタしたものをPDFにしているので、日付データを毎日設定し直す。(filterday関数を作成, 特定の日時でのトリガー設置の為に日付を構築する関数を用意してあげる(getDate()とする)。, 本日の日付と特定時刻で設定されているAM11:00発動のPDF化&メール送信トリガー, このスクリプト群は、一度そのスプレッドシートのIDをスクリプトプロパティに格納しておく必要があるので、最初の1回だけsetup()を実行する必要性があります。, 当たり前ですが、最初の1回だけは、手動でトリガー群を設置しないといけないので、settingAllTrigger()を実行する必要性があります。以降は、トリガーが勝手にやってくれるので、必要ありません。, 特定の日付のトリガー用に、trigger1~3の変数を用意して、getDate()関数で整形して上げた値を返してあげています。, スプレッドシートが開かれていなくても、トリガー発動で消せるように、ssidを設定しておきます。, スクリプトトリガー作動時のユーザは設置者の権限となります。故に、メールアドレスなども設置者のメアドがログに残ることになります。, 複数の人間が同じトリガーを設置してはなりません。また、他の人からは他の人間が設置したスクリプトトリガーは見えませんので要注意です。タブってトリガーが発動されることになります。, 集計したさらに先に、PDFを作成して格納するようなルーチンを書く場合には、スクリプトトリガーの発動時間を当たり前ですが、ずらしておく必要性がある。でないと、集計されきってないのに、空のPDFが作成されたりする。, 複雑な関数を自分で作成し、スプレッドシート内で関数として使っている場合、「読込中・・・」のままになり、これをPDF化するような自動化を行うと、全く帳票として使い物にならないものが生成されるので、なるべくなるべく、スプレッドシート上で使用する関数は標準の関数を使用すること(自作関数はどうしてもスピードでは圧倒的に負ける)。, 時間トリガーはあくまでも指定した時間~時間のどこかで実行されるものなので、確実に何時何分という指定はできない。, 通常は、getActiveSpreadsheetなどで取得しているシートは、openByIdにしておくこと。もちろん、自分自身のIDを取得するような関数も用意しておいて、予めスクリプトプロパティに格納し、呼び出す仕組みが望ましい。でないと、書き込みなどが出来ずに終わってしまう。, スクリプトトリガーの設置では、引数をつけた関数の呼び出しが出来ないので、引数付きで呼び出したい場合には、. + question + ': ' + answer + '\n'; 簡易的に、やってみました。 なりすましに引っかかるようです。 無料で簡単にフォームを作れるGoogleフォーム。問い合わせや申し込みの受付時に自動返信機能があったら嬉しいですよね。本記事ではGoogle Apps Scriptを使ってGoogleフォームに自動返信機能を設定する方法を解説しています。 一度削除して、エラーが出ても無視してテストしたところ、解決しました。 More than 1 year has passed since last update. var content = '下記の内容で、お問い合わせを受信しました。\n\n' + message; 回答者、管理者、特定の誰か、この3人に回答内容を自動で送信したいのです。。, この特定の誰かとは、フォームの質問1の回答に入力されたアドレスになります。 質問1のタイトルを「この回答を報告する人」とします。 贅沢な悩みかもしれませんが、神にすがる思いです。。 var report = itemResponses[0].getResponse(); こんにちは! 今回はGoogle Apps Scriptを使って、Googleフォームに回答が来たら、メールを送信するスクリプトを作ってみます。 そのため、返信する際にユーザーのアドレスに返信できるようにReply-toを指定しています。, 山口県でWeb制作。クリエイティブハントというイベントをやったりしています。 titleに件名を。 photo credit: hgz09 paper airplane via photopin (license), Google Apps Scriptで備品購入申請を題材にワークフローを作る方法をお伝えしております。, ということで、今回はGoogle Apps Scriptでフォーム送信時にメッセージを送る方法です。, それで、フォームからの送信があった場合は、以下のように連携するスプレッドシートに自動でデータが入力されるわけですね。, 次の段取りとしては、このフォームの送信があったときに、申請があったことを承認者に伝えたいですよね。, GASでGmailからメールを送信するには、GmailAppオブジェクトのsendEmailメソッドでしたね。, オプションにはCCやBCC、添付ファイルなどをオブジェクト形式で設定できますが、必要がなければ省略できます。, ということで、フォームから送信されたデータが蓄積されるスプレッドシートのコンテナバインドスクリプトに、以下のようなsendMessage関数を作りました。, それで、先ほど作ったsendMessage関数を実行するわけですが、担当者がスプレッドシートに張り付いて、追加されたのを目でみてスクリプトエディタで「▶」ボタンをクリック…というわけにはいきません。, ここは、GASで用意されている「フォーム送信時」のトリガーという機能を使うことができます。, これは、フォームの送信が行われたときに、自動でスクリプトを実行させることができる機能です。, トリガーがフォームの送信を待ち構えていて、その際にはスクリプトを動作してくれます。, まず、スクリプトエディタのツールバーから以下マークの「現在のプロジェクトのトリガー」をクリックします。, すると、別タブで「Google Apps Scriptダッシュボード」の現在のプロジェクトのトリガーのページが開きますので、「+ トリガーを追加」をクリックします。, 「備品購入申請のトリガーを追加」というダイアログが表示されるので、以下のように設定して「保存」します。, 承認に関するダイアログが表示されることもあると思いますので、承認してあげてください。, 他にもトリガーの種類はたくさんありますので、「イベントのソース」や「イベントの種類」について覗いてみてくださいね。, スプレッドシートに書き込まれるとともに、「フォームの送信」トリガーが発火して、sendMessage関数が実行。, 以上、Google Apps Scriptでフォーム送信時にメッセージを送るスクリプトの作り方をお伝えしました。, ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。, Google Apps Scriptを使って簡単なワークフローを作るシリーズです。今回は備品購入申請のフォームをGoogleフォームで作成して設定をしその送信結果をスプレッドシートで確認していきます。, Google Apps Scriptでフォーム送信した内容を含んだメッセージをGmailで送るスクリプト, Google Apps Scriptで備品購入申請を題材にワークフローを作っております。今回はGASでフォーム送信した内容をイベントオブジェクトから取り出してそれを含めたメッセージをGmailで送る方法です。, オンラインメモツールのEvernote。Google Apps Scriptとチャットワークを使って、チャットからEvernoteに新規ノート投稿をするという方法について提案をしたいと思います。, 「JavaScriptで動作するWebページ(動的サイト)を色々な言語でスクレイピング」することをシリーズでお伝えしています。