Hatena::ブログ(Diary)

_development, RSSフィード Twitter

2010-07-16

Google Docsのフォーム投稿者に確認メールを送信する

Google DocsのSpreadsheetでつくったフォームが投稿されたときに、投稿者に確認メールを送信する方法を記す。

次のことを前提とする。


では、方法を示す。

  1. spreadsheetからフォームをつくる。[メニュー] > [Form] > [Create a Form]
  2. 投稿者のメールアドレス入力欄を追加する。仮に"e-mail address"とする。
  3. フォームを保存し、編集を終了する。
  4. Script Editorを開く。[メニュー] > [Tools] > [Scripts] > [Script Editor...]
  5. 以下のサンプルのようなスクリプトを入力する。
  6. 保存する(名前は適当でよい)
  7. トリガーの設定を開く。Script Editorの画面で[メニュー] > [Triggers] > [Current script's triggers...]
  8. トリガーを追加する。リンク"No triggers set up. Click here to add one now."をクリック
  9. 三つのセレクトボックスを順に[onFormSubmit][From spreadsheet][On form submit]に設定する。(最初のonFormSubmitは入力したスクリプトのファンクション名で、最後のOn form submitはspreadsheetのイベントハンドラである。)
  10. 保存するとスクリプトの実行を許可するためのダイアログが表示されるので"Authorize"する。
  11. 編集を終了する。
  12. 以上!

ここまでの手順を経たのち、フォームから投稿すると*スクリプトを作成したユーザーを送信者とした*トリガーを設定したアカウントを送信者としたメールが、ユーザー("e-mail address"に入力されたメールアドレス)に送信される。

つまり、説明した方法では、送信者をあなた個人のアカウントではなく代表アドレスのようなものにしたいときには、代表アドレスアカウントスクリプトを作成しなければならないということである。

AppEngineのメール送信のポリシーに倣えば、コラボレーター・オーナーのうちの任意のアカウントを送信者とできそうな気はするのだが。


function onFormSubmit(e) {
    try {
        var email = e.namedValues["e-mail address"].toString() ;
        var msg = "Hello " + email + "!";
        var subject = "Send Mail Example";
        MailApp.sendEmail(email, subject, msg);
    } catch (e) {
        //エラーが発生した場合に管理者にメールを送信する
        MailApp.sendEmail("admin@example.com", "Error report", e.message);
    }
}

とももともも 2010/11/02 17:01 すごく助かりました!
ありがとうございます!!!

通りすがり通りすがり 2011/02/22 17:39 やりたかったことがまさにピンポイントで書かれていてとても役に立ちました。
ありがとうございました。

初心者初心者 2011/10/10 15:09 非常に役にたちました。ありがとうございました。

上記以外に、送信後、サンキューページへ移動することも可能なのでしょうか?

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/esmasui/20100716/1279301074