作成したアンケートフォームのURLを、メールで定期配信する by GAS(Google Apps Script)

##背景
* 今月から月に1回、自社のメンバーで会議をやるので、出欠アンケートを取りたい
* 会議の後に懇親会(ごはん食べに行く)をやるので、その出欠も取りたい
* 出来れば人数まで把握したい


##やりたいこと
* アンケートフォーム(googleフォーム)を1～12月分(1年分)作成する
  * 完了している
* 毎月1日、5日、10日に、その月の出欠アンケートフォームをメール送信し、記入してもらう
  * GASのトリガー機能(GUI)で、関数をスケジュール実行するように登録する
      * 調べたり、見たらすぐわかるので、ここでは書きません。。
* 記入してもらったデータをもとに、出席者、欠席者の情報をメールに記載する



##この記事で書いていること
* 今月分(その月分)のアンケートフォーム(Googleフォーム)のURLを、メール本文に記載する方法
* 記入してもらったデータ(スプレッドシート)をもとに、出席者、欠席者の情報をメール本文に記載する方法


</br>

##用意するもの
  * 読み込み用googleスプレッドシート
    * A列の1~100行目にアンケートの送信先メールアドレスを記載する
    * C列の1～12行目に1月から12月分のアンケートフォームURLを記載する
    * E列の1～12行目に1月から12月分のアンケート集計結果スプレッドシートURLを記載する



</br>



### アンケート集計結果スプレッドシートとは
  * アンケート(Googleフォーム)を作ると自動で一つ、集計結果のスプレッドシートが、同じ場所にできます
  * アンケートフォームの質問への回答が、質問1種類につき1カラムで出力されます
  * 今回使いたいのは・・・
    * C列に出力される「氏名」
    * D列に出力される「定例会議への出席／欠席」
    * F列に出力される「懇親会への出席／欠席」
    * 全部で17名なので、それぞれC1～C20,D1～D20,F1～F20まで、取り出すことにする


## 書いてみた
* プロフラミング自体、初心者なので、お手柔らかに、お願いします。

***

```gas


frunction syukketsu(){

//読み込み用スプレッドシートを取得します
//スプレッドシートを開いた際のURL(https://docs.google.com/spreadsheets/xxxx)を、ダブルコーテ内に貼り付けます
var SS = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/xxxx/edit#gid=0");


//読み込み用スプレッドシートから、メール配信先を取得します
//A1からA100の範囲に書かれた宛先に配信します
var MAIL_TO = SS.getRange("A1:A100").getValues();


//宛先CCに私を入れます
var MAIL_CC = "t-yamamoto@xxxxx.xxxxx"


//読み込み用スプレッドシートから、今月のアンケートフォームURLを取得します
//C1～C12の範囲に、1～12月のアンケートフォームURLがそれぞれ書かれています
//例：7月のアンケートフォームURLは、C7に書かれています
var OBJDATE =new Date();
var MONTH = OBJDATE.getMonth()+1;
var BASYO1 = "C" + MONTH;
var AF_URL = SS.getRange(BASYO1).getValue();

//アンケートフォームのタイトルを、メール件名用に取得します
var AF = FormApp.openByUrl(AF_URL);
var TITLE = AF.getTitle();


//読み込み用スプレッドシートから、今月のアンケート集計結果スプレッドシートURLを取得します
//E1～E12の範囲に、1～12月のアンケート集計結果スプレッドシートURLがそれぞれ書かれています
//例：7月のアンケート集計結果スプレッドシートURLは、E7に書かれています
var BASYO2 = "E" + MONTH;
var RESULT_URL = SS.getRange(BASYO2).getValue();


//アンケート集計結果スプレッドシートから、集計結果をメール本文用に取得します
var RESULT_SS = SpreadsheetApp.openByUrl(RESULT_URL);


//アンケート集計結果スプレッドシートのC列から、参加者の氏名を取得します
var RESULT_C1 = RESULT_SS.getRange("C1").getValues();
var RESULT_C2 = RESULT_SS.getRange("C2").getValues();
var RESULT_C3 = RESULT_SS.getRange("C3").getValues();
var RESULT_C4 = RESULT_SS.getRange("C4").getValues();
var RESULT_C5 = RESULT_SS.getRange("C5").getValues();
var RESULT_C6 = RESULT_SS.getRange("C6").getValues();
var RESULT_C7 = RESULT_SS.getRange("C7").getValues();
var RESULT_C8 = RESULT_SS.getRange("C8").getValues();
var RESULT_C9 = RESULT_SS.getRange("C9").getValues();
var RESULT_C10 = RESULT_SS.getRange("C10").getValues();
var RESULT_C11 = RESULT_SS.getRange("C11").getValues();
var RESULT_C12 = RESULT_SS.getRange("C12").getValues();
var RESULT_C13 = RESULT_SS.getRange("C13").getValues();
var RESULT_C14 = RESULT_SS.getRange("C14").getValues();
var RESULT_C15 = RESULT_SS.getRange("C15").getValues();
var RESULT_C16 = RESULT_SS.getRange("C16").getValues();
var RESULT_C17 = RESULT_SS.getRange("C17").getValues();
var RESULT_C18 = RESULT_SS.getRange("C18").getValues();
var RESULT_C19 = RESULT_SS.getRange("C19").getValues();
var RESULT_C20 = RESULT_SS.getRange("C20").getValues();


//アンケート集計結果スプレッドシートのD列から、定例会議出欠の回答を取得します
var RESULT_D1 = RESULT_SS.getRange("D1").getValues();
var RESULT_D2 = RESULT_SS.getRange("D2").getValues();
var RESULT_D3 = RESULT_SS.getRange("D3").getValues();
var RESULT_D4 = RESULT_SS.getRange("D4").getValues();
var RESULT_D5 = RESULT_SS.getRange("D5").getValues();
var RESULT_D6 = RESULT_SS.getRange("D6").getValues();
var RESULT_D7 = RESULT_SS.getRange("D7").getValues();
var RESULT_D8 = RESULT_SS.getRange("D8").getValues();
var RESULT_D9 = RESULT_SS.getRange("D9").getValues();
var RESULT_D10 = RESULT_SS.getRange("D10").getValues();
var RESULT_D11 = RESULT_SS.getRange("D11").getValues();
var RESULT_D12 = RESULT_SS.getRange("D12").getValues();
var RESULT_D13 = RESULT_SS.getRange("D13").getValues();
var RESULT_D14 = RESULT_SS.getRange("D14").getValues();
var RESULT_D15 = RESULT_SS.getRange("D15").getValues();
var RESULT_D16 = RESULT_SS.getRange("D16").getValues();
var RESULT_D17 = RESULT_SS.getRange("D17").getValues();
var RESULT_D18 = RESULT_SS.getRange("D18").getValues();
var RESULT_D19 = RESULT_SS.getRange("D19").getValues();
var RESULT_D20 = RESULT_SS.getRange("D20").getValues();


//アンケート集計結果スプレッドシートのF列から、懇親会の出欠可否を取得します
var RESULT_F1 = RESULT_SS.getRange("F1").getValues();
var RESULT_F2 = RESULT_SS.getRange("F2").getValues();
var RESULT_F3 = RESULT_SS.getRange("F3").getValues();
var RESULT_F4 = RESULT_SS.getRange("F4").getValues();
var RESULT_F5 = RESULT_SS.getRange("F5").getValues();
var RESULT_F6 = RESULT_SS.getRange("F6").getValues();
var RESULT_F7 = RESULT_SS.getRange("F7").getValues();
var RESULT_F8 = RESULT_SS.getRange("F8").getValues();
var RESULT_F9 = RESULT_SS.getRange("F9").getValues();
var RESULT_F10 = RESULT_SS.getRange("F10").getValues();
var RESULT_F11 = RESULT_SS.getRange("F11").getValues();
var RESULT_F12 = RESULT_SS.getRange("F12").getValues();
var RESULT_F13 = RESULT_SS.getRange("F13").getValues();
var RESULT_F14 = RESULT_SS.getRange("F14").getValues();
var RESULT_F15 = RESULT_SS.getRange("F15").getValues();
var RESULT_F16 = RESULT_SS.getRange("F16").getValues();
var RESULT_F17 = RESULT_SS.getRange("F17").getValues();
var RESULT_F18 = RESULT_SS.getRange("F18").getValues();
var RESULT_F19 = RESULT_SS.getRange("F19").getValues();
var RESULT_F20 = RESULT_SS.getRange("F20").getValues();


//定例会議の出席・欠席を数えます
var SYUSSEKI = 0;
var KESSEKI = 0;

function count (param1) {
if ("出席" == param1) {
SYUSSEKI++;
} else if ("遅刻" == param1){
SYUSSEKI++;
} else if ("欠席" == param1){
KESSEKI++;
}
};

count(RESULT_D2)
count(RESULT_D3)
count(RESULT_D4)
count(RESULT_D5)
count(RESULT_D6)
count(RESULT_D7)
count(RESULT_D8)
count(RESULT_D9)
count(RESULT_D10)
count(RESULT_D11)
count(RESULT_D12)
count(RESULT_D13)
count(RESULT_D14)
count(RESULT_D15)
count(RESULT_D16)
count(RESULT_D17)
count(RESULT_D18)
count(RESULT_D19)
count(RESULT_D20)


//懇親会の出席・欠席を数えます
var KO_SYUSSEKI = 0;
var KO_KESSEKI = 0;

function count2 (param1) {
if ("出席" == param1) {
KO_SYUSSEKI++;
} else if ("欠席" == param1){
KO_KESSEKI++;
}
};

count2(RESULT_F2)
count2(RESULT_F3)
count2(RESULT_F4)
count2(RESULT_F5)
count2(RESULT_F6)
count2(RESULT_F7)
count2(RESULT_F8)
count2(RESULT_F9)
count2(RESULT_F10)
count2(RESULT_F11)
count2(RESULT_F12)
count2(RESULT_F13)
count2(RESULT_F14)
count2(RESULT_F15)
count2(RESULT_F16)
count2(RESULT_F17)
count2(RESULT_F18)
count2(RESULT_F19)
count2(RESULT_F20)

 

//メール本文
var BODY = ["# 本メールはGAS(Google Apps Script)で定期的に自動配信しております\n\n",

"各位\n\n",

"おつかれさまです。\n",
"愛されボーイ山本です。\n\n",

"表題日時および場所で、定例会議が開催されます。\n",
"アンケートフォームに出欠をご回答ください。\n",
"フォームのURLは以下となります。\n",
"" + AF_URL + "\n\n\n\n\n\n",

"#### 現在の集計結果 ####\n",
"氏名\b\b\b\b\b\b\b\b\b\b\b\b出欠\b\b\b\b\b\b\b\b懇親会\n",
"====\b\b\b\b\b\b\b\b\b\b\b\b====\b\b\b\b\b\b\b\b======\n",
"" + RESULT_C2 + "\b\b\b\b\b\b" + RESULT_D2 + "\b\b\b\b\b\b\b\b" + RESULT_F2 + "\n",
"" + RESULT_C3 + "\b\b\b\b\b\b" + RESULT_D3 + "\b\b\b\b\b\b\b\b" + RESULT_F3 + "\n",
"" + RESULT_C4 + "\b\b\b\b\b\b" + RESULT_D4 + "\b\b\b\b\b\b\b\b" + RESULT_F4 + "\n",
"" + RESULT_C5 + "\b\b\b\b\b\b" + RESULT_D5 + "\b\b\b\b\b\b\b\b" + RESULT_F5 + "\n",
"" + RESULT_C6 + "\b\b\b\b\b\b" + RESULT_D6 + "\b\b\b\b\b\b\b\b" + RESULT_F6 + "\n",
"" + RESULT_C7 + "\b\b\b\b\b\b" + RESULT_D7 + "\b\b\b\b\b\b\b\b" + RESULT_F7 + "\n",
"" + RESULT_C8 + "\b\b\b\b\b\b" + RESULT_D8 + "\b\b\b\b\b\b\b\b" + RESULT_F8 + "\n",
"" + RESULT_C9 + "\b\b\b\b\b\b" + RESULT_D9 + "\b\b\b\b\b\b\b\b" + RESULT_F9 + "\n",
"" + RESULT_C10 + "\b\b\b\b\b\b" + RESULT_D10 + "\b\b\b\b\b\b\b\b" + RESULT_F10 + "\n",
"" + RESULT_C11 + "\b\b\b\b\b\b" + RESULT_D11 + "\b\b\b\b\b\b\b\b" + RESULT_F11 + "\n",
"" + RESULT_C12 + "\b\b\b\b\b\b" + RESULT_D12 + "\b\b\b\b\b\b\b\b" + RESULT_F12 + "\n",
"" + RESULT_C13 + "\b\b\b\b\b\b" + RESULT_D13 + "\b\b\b\b\b\b\b\b" + RESULT_F13 + "\n",
"" + RESULT_C14 + "\b\b\b\b\b\b" + RESULT_D14 + "\b\b\b\b\b\b\b\b" + RESULT_F14 + "\n",
"" + RESULT_C15 + "\b\b\b\b\b\b" + RESULT_D15 + "\b\b\b\b\b\b\b\b" + RESULT_F15 + "\n",
"" + RESULT_C16 + "\b\b\b\b\b\b" + RESULT_D16 + "\b\b\b\b\b\b\b\b" + RESULT_F16 + "\n",
"" + RESULT_C17 + "\b\b\b\b\b\b" + RESULT_D17 + "\b\b\b\b\b\b\b\b" + RESULT_F17 + "\n",
"" + RESULT_C18 + "\b\b\b\b\b\b" + RESULT_D18 + "\b\b\b\b\b\b\b\b" + RESULT_F18 + "\n",
"" + RESULT_C19 + "\b\b\b\b\b\b" + RESULT_D19 + "\b\b\b\b\b\b\b\b" + RESULT_F19 + "\n",
"" + RESULT_C20 + "\b\b\b\b\b\b" + RESULT_D20 + "\b\b\b\b\b\b\b\b" + RESULT_F20 + "\n\n",


"\n\n定例会議への出席／欠席人数は以下となってます。\n",
"出席者\b\b\b\b\b\b欠席者\n",
"======\b\b\b\b======\n",
""+ SYUSSEKI + "人" + "\b\b\b\b\b\b\b\b\b\b\b\b" + KESSEKI + "人" + "\n\n",


"\n\n懇親会への出席／欠席人数は以下となっています。\n",
"出席者\b\b\b\b\b\b欠席者\n",
"======\b\b\b\b======\n",
""+ KO_SYUSSEKI + "人" + "\b\b\b\b\b\b\b\b\b\b\b\b" + KO_KESSEKI + "人" + "\n\n",


"\n\n集計結果のスプレッドシートURLは以下となります。\n",
"" + RESULT_URL + "\n\n",

"以上です。\n",
"よろしくお願いいたします。\n",

].join("");

// メールを送信します
MailApp.sendEmail(MAIL_TO, TITLE, BODY,{cc:MAIL_CC});
}