グーグルフォームに添付された資料をメールでGETだぜ!
こんにちわ!
今回はグーグルフォームで添付されたファイルをそのままメールで送っちゃえばいいじゃない。って思ったの。
とっても簡単だったからご紹介します。
const mailMember='XXXXXX@gmail.com';
const title = 'フォーム申請がありました。';
function sendform(e){
let items = e.response.getItemResponses();
let msg = '';
for (let i = 0; i < items.length; i++) {
let item = items[i];
let q = item.getItem().getTitle();
let a = item.getResponse();
if(q=='ファイルを添付して'){
let file = DriveApp.getFileById(a).getBlob();
options={
attachments:file
};
}
msg += q +' : '+ a + '\n';
}
GmailApp.sendEmail(mailMember, title, msg,options);
Logger.log(msg);
}
ね?とっても簡単。流れは以下のとおり。
①フォームにある質問をq、返答をaに入れて、msgにqとaを入れる。
②フォームの質問が”ファイルを添付してください。”だったら、メール添付
③メール送信って流れ
①フォームにある質問をq、返答をaに入れて、msgにqとaを入れる。
function sendform(e){
//itemsってやつにフォームに乗っているすべての情報をいれちゃう。
let items = e.response.getItemResponses();
//msgにメールの本文をいれるから箱を用意
let msg = '';
//質問と答えを一つ一つ抜いていくよ。
for (let i = 0; i < items.length; i++) {
//itemに一行ずつの情報を入れる
let item = items[i];
// qに質問を入れる。
let q = item.getItem().getTitle();
// aに回答を入れる
let a = item.getResponse();
//質問と回答をmsgに入れる
msg += q +' : '+ a + '\n';
}
}
↑の解説をするよ。
例えば、今回のフォームではこんな内容があったとします。
Q1)お名前は?
A1)かたくり子です。
Q2)年齢は?
A2)ひみつだよ。
Q3)ファイルを添付して
A3)ファイルを添付
以上、3つの質問と3つの回答がありました。
これをitemsにいれると↓こうなるイメージ
[お名前は?、かたくり子です。],
[年齢は?、ひみつだよ。],
[ファイルを添付して、ファイルを添付]
エクセルでいうとA1セルからC2セルに情報がはいっている感じ。
これをforで1行ずつ情報を取得していくんだ。
プログラムの世界では1行目は0で表現することを忘れないでね。
item = items[i]
item に items[0]の情報を入れるんだ。
items[0]っていうのは、[お名前は?、かたくり子です。]だよ。
qに「お名前は?」が入って、aに「かたくり子です。」が入る。
msg += q +' : '+ a + '\n';
これをmsgにいれているんだ。
msg に↓が入るんだ。
お名前は? : かたくり子です。(改行)
※\nは改行だよ。
②フォームの質問が”ファイルを添付してください。”だったら、メール添付
if(q=='ファイルを添付して'){
let file = DriveApp.getFileById(a).getBlob();
options={
attachments:file
};
}
ここでは、質問内容をチェック。ファイルを添付してくださいだったら、
file = DriveApp.getFileById(a).getBlob();
aの情報(aに入っているのはファイルのID情報なんだよ。)から添付情報をfileに入れてあげてる。
options={
attachments:file
};
これはメールにfileを添付してって命令しているよ。
③メール送信
GmailApp.sendEmail(mailMember, title, msg,options);
mailMemberとtitleは、↓だよ。
const mailMember='XXXXXX@gmail.com';
const title = 'フォーム申請がありました。';
要するに、
GmailApp.sendEmail(mailMember, title, msg,options);ってのは、
Gmail起動!メールを送れ!(宛先、表題、本文、添付)って意味だよ。
葛城ミサトさんを思い浮かべれば簡単だね!