2011年7月23日土曜日

【業務で使える】連絡メモ送信ツール(3)スクリプトの作成

フォームから渡されたデータを使ってメールを送信するスクリプトを作成します。

まず、「ツール」メニューから「スクリプト エディタ...」を選択します。


スクリプト エディタに、以下のスクリプトを入力します。
(コピー&ペーストした方が楽です。)
function MySendMemo(e) {
  var mail_to = e.namedValues["連絡先"];
  var datetime = e.namedValues["日時"];
  var aite = e.namedValues["会社名・お名前"];
  var renraku = e.namedValues["連絡内容"];
  var shousai = e.namedValues["連絡詳細"];
  var bikou = e.namedValues["折り返し番号や補足"];
  var uke = e.namedValues["受けた人"];

  var subject = "【連絡メモ】" + aite + "様";
  var body = "◆日時:\n" + datetime + " \n\n";
  body = body + "◆会社・お名前:\n" + aite + "様\n\n";
  body = body + "◆連絡内容:\n" + renraku + " \n\n";
  body = body + "◆連絡詳細:\n" + shousai + " \n\n";
  body = body + "◆折り返し番号や補足:\n" + bikou + " \n\n";
  body = body + "◆受けた人:\n" + uke + " \n\n";

  MailApp.sendEmail(mail_to, subject, body);
}

フロッピーディスクのマークをした「保存」ボタンを押し、名前を付けて保存します。


これにて、スクリプトの作成は完了です。

このスクリプトのポイントは1つだけ。フォームで入力されたデータは、MySendMemo関数の引数である e パラメータを使って次のように取得できます。

e.namedValues["フォーム内の項目名"]

よって、スクリプト内で利用したい項目は、全て変数に格納し、その変数を使ってメールを送信するロジックになっています。



【おまけ】新ブログを開設しました。
『ExcelユーザーのためのGoogleスプレッドシート入門』
Excelはフツーに使えるよという方でも、Googleスプレッドシートを使った時にはアレッと思うことが結構あるものです。そういう方々向けの企画です。


13 件のコメント:

  1. ご多忙の折り、失礼いたします。
    先日著書を購入させて頂き、script学習中の者です。

    上記にある連絡メモ送信ツールを倣って作成したところ、次のようなエラーが出てしまい、原因が分らず躓いております。

      TypeError: Cannot read property "namedValues" from undefined.

    大変恐縮ではありますが、もしこのような症例について耳にされていたり、お心当たりがありましたらば、ご教授頂けないでしょうか。

    よろしくお願い致します。

    返信削除
  2. Yukaさん、はじめまして。このエラーは、スクリプトをスクリプトエディタで直接実行した場合に起こるものです。ここで公開しているスクリプトは、フォームからトリガを使って実行しないと正常に動作しません。よって、スクリプトエディタ上で直接実行はできませんのでご注意下さい。

    返信削除
  3. 早々にお返事くださり有難うございます。
    お蔭様で、なんともあっさり解決致しました!

    また何かあった際、お力お借りできれば幸いです。
    有難うございました。

    返信削除
    返信
    1. 解決してよかったです。もし Yukaさんが Google Apps for Business のユーザーであれば、Google Appsのユーザー会に無料で参加できますので、一度参加してみませんか。ユーザー同士で情報交換できる楽しい会ですよ。

      削除
  4. ユーザー会の情報を有難うございます。

    私は"for business"ではなく、無料版のユーザーなのですが、
    「今後利用しようとしている個人」でも参加可なようでしたので、
    早速ユーザー登録してみました!

    限りなく素人ですが、google scriptをマスターすべく頑張ります。

    返信削除
    返信
    1. 次回のユーザー会の開催日程が決定しましたね。事務局から連絡がいきましたでしょうか。
      【日時】8月28日(火) 17:30~20:30 〔受付開始17:00~〕
      【会場】グーグル株式会社 本社(六本木ヒルズ森タワー27階)
      一度参加してみて下さい。
      参加申し込みはこちら⇒http://goo.gl/slhVX

      削除
  5. お知らせありがとうございます。
    今回は都合が合わず参加できませんが、
    機会を見て一度は参加してみたいなと思います。

    返信削除
  6. たびたび失礼致します。

    この度、Google Apps Scriptに関するブログをはじめることにしました!
    有江様の著書やサイトも紹介させて頂きたいと思っておりますが、よろしいでしょうか。

    また、よければお時間のある時にのぞきに来て頂ければ幸いです。
    http://mypleis.blogspot.jp/

    返信削除
  7. 著書で勉強させて頂いております。
    上記の方と同じように、『TypeError: undefined からプロパティ「連絡先」を読み取れません。(行 2、ファイル「コード」)』というエラーが出てメールが飛びません。(スプレッドシートには記録されています)
    フォームから実行してもダメです。
    ソースは、こちらのサイトをコピーさせて頂きました。
    この記事公開から時間が経っておりますので、何かしら仕様変更があったのでしょうか?

    返信削除
  8. やまもとたろうさん、エラーメッセージは以下のように表示されますか?

    TypeError: undefined からプロパティ「連絡先」を読み取れません。

    表示されたままのメッセージを教えて下さい。

    返信削除
    返信
    1. 以下コピーします。

      MySendMemo TypeError: undefined からプロパティ「連絡先」を読み取れません。(行 2、ファイル「コード」) formEdit 13/09/25 11:25

      削除
  9. TypeError: undefined からプロパティ「namedValues」を読み取れません
    となるのは、どうしてでしょうか?
    どなたか、ご存じの方がいましたら、
    お教え下さい。
    宜しくお願いします。

    返信削除
    返信
    1. 作成したスクリプトをそのまま実行するとエラーになります。
      次の2ページのように、トリガーを作成し、フォームから実行してみて下さい。
      【業務で使える】連絡メモ送信ツール(4)トリガーの作成
      【業務で使える】連絡メモ送信ツール(5)フォームの送信

      削除