見出し画像

グーグルフォームに添付された資料をメールで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起動!メールを送れ!(宛先、表題、本文、添付)って意味だよ。
葛城ミサトさんを思い浮かべれば簡単だね!

いいなと思ったら応援しよう!