ラベル sendEmail() の投稿を表示しています。 すべての投稿を表示
ラベル sendEmail() の投稿を表示しています。 すべての投稿を表示

2015年6月3日水曜日

フォーム回答内容をメールで通知する | Google Apps Script

※投稿後に動作確認をしたところ不具合が見つかったため、スクリプトを修正しました。

Googleのサービスの1つにフォームがあります。

アンケートを作成し、回答結果をスプレッドシートにまとめることができて便利なのですが、回答がどれくらい集まっているかを確認するのに、毎回スプレッドシートを開かなければならないのは面倒です。私の場合、最も頻繁に利用するメールで回答状況をざっくりとでも把握したいと考えます。そこで、回答があったときに、その内容を指定したメールアドレスに送るスクリプトを用意しておきます。

---以下スクリプト---
function sendAnswer() {

    var ss = SpreadsheetApp.getActiveSheet();
    var dataRange = ss.getDataRange();
    var lastRow = dataRange.getLastRow();
 
    var date = ss.getRange("A"+lastRow).getValue();
    var name = ss.getRange("B"+lastRow).getValue();
    var answer = ss.getRange("C"+lastRow).getValue();

    var subject = "フォームの回答がありました"

    var mailBody = date + "\n"
                       + name + "\n"
                       + answer;
    var mailTo = "メールアドレス";

    GmailApp.sendEmail(mailTo,subject,mailBody);
}
---以上スクリプト---

フォームでの最新の回答は、前の回答の1つ下の行に入力されます。つまり、最新の回答内容を取得するにはデータ最下端行の各セルの値を取得すればよいことになります。

最終行A列:最新回答送信日時(タイムスタンプ)
最終行B列:本例では回答者の名前
最終行C列:回答内容
(アンケートの設問ごとに回答が入力される列が分かれます)

あとは、Google Apps Scriptでのメール送信ルールに従い、変数subject,mailTo,mailBodyで指定したメール件名と宛先、本文を使って記述します。

最後に大事なことが1つあります。

回答があった時にタイムリーにメール送信してくれると助かりますよね。
それはトリガーで実現します。

フォームから回答が送信されたときにsendAnswer()関数を起動させるトリガーを設定すれば、目的達成です。

2014年8月11日月曜日

Google Apps Script | メールにファイルを添付して送付する

メールだけを送るときのGoogle Apps Scriptの書き方は以前の投稿に書きました。

今回はさらにメールにファイルを添付して送信する場合の書き方です。

---以下スクリプト---

var mailTo = "___@gmail.com"; //メール送信先アドレス
var mailSubject = "Test"; // メールのタイトルvar mailBody = "これはテストです。"; // メール本文

var file1 = {

                fileName: "chart1", 
                mimeType: blob1.getContentType(),
                content: blob1.getBytes()

               };
var file2 = {
                fileName: "chart2", 
                mimeType: blob2.getContentType(),
                content: blob2.getBytes()

               };

GmailApp.sendEmail(mailTo,subject,mailBody,{attachments: [file1,file2]});

---以上スクリプト---

と、このような形式になるのですが、これでは不完全です。blob1やblob2って何?となります。これについては別途。。。

Google Apps Script | メールを送る

GmailApp.sendEmail(mailTo,mailSubject,mailBody);

ここで、mailTo, mailSubject, mailBodyは変数です。
あらかじめ

var mailTo = "___@gmail.com"; // メール送信先アドレス
var mailSubject = "Test"; // メールのタイトル
var mailBody = "これはテストです。"; // メール本文

などと指定しておきます。

Google Apps Scriptリファレンス


SyntaxHighlighter