過去記事の応用として
Google Formを使って、テストと受講証明pdfを自動発行
アンケートを集計して、その結果を回答者にフィードバックする仕組みを作りました。
準備するもの
回答用のGoogleアカウント(個人のメアドを使わない)
フォームを作成
今回は、これを例に作ります。
CiTAS (化学療法に伴う味覚変化評価スケール) 日本語版 version β
http://plaza.umin.ac.jp/~citas/CiTAS/CiTAS.html
Googleフォームから、質問内容を反映させたフォームを作成します。
メール回答のテンプレートドキュメントを作成
こんな風に作成しました。
作ったGoogle docファイルのIDをコピペしておきます。
{Value1}さま
ご回答ありがとうございます。
化学療法に伴う味覚変化評価スケールの集計結果をお送りします。
最高得点の5点に近ければ症状が強く,最低点の0点に近ければ症状が軽いと判断します。【基本味の低下】
{Value2} 点
【不快症状】
{Value3} 点
【自発性異常味覚・錯味】
{Value4} 点
【全般的味覚変化】
{Value5} 点
症状ごとの詳しい対処法について
http://plaza.umin.ac.jp/~citas/CiTAS/CiTAS.html
GAS
/*最初に文字データを数字に変換する関数を定義します*/
function henkan(n){
var result;
if (n == 'ふつうに感じる'){
result = 1;
}else if (n == '少し感じにくい'){
result = 2;
}else if (n == '多少感じにくい'){
result = 3;
}else if (n == 'かなり感じにくい'){
result = 4;
}else if (n == '全く味がしない'){
result = 5;
}else if (n == 'いいえ'){
result = 1;
}else if (n == 'すこし'){
result = 2;
}else if (n == 'まあまあ'){
result = 3;
}else if (n == 'かなり'){
result = 4;
}else if (n == 'とても'){
result = 5;
}
return result;
}
/*ここからフォームが投稿されたときに動くスクリプトです*/
function onFormSubmit() {
/*データ取得*/
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('フォームの回答 1');
const values = spreadsheet.getDataRange().getDisplayValues();
console.log(values.length);
//作成済となっていない行を取得する。
for(let i = 1; i < values.length; i++){
if(values[i][21]!=='作成済'){
const email = values[i][1]; //メアド
const name = values[i][2]; //名前
const Q1 = henkan(values[i][3]); //ここから数値化した各質問の答え
const Q2 = henkan(values[i][4]);
const Q3 = henkan(values[i][5]);
const Q4 = henkan(values[i][6]);
const Q5 = henkan(values[i][7]);
const Q6 = henkan(values[i][8]);
const Q7 = henkan(values[i][9]);
const Q8 = henkan(values[i][10]);
const Q9 = henkan(values[i][11]);
const Q10 = henkan(values[i][12]);
const Q11 = henkan(values[i][13]);
const Q12 = henkan(values[i][14]);
const Q13 = henkan(values[i][15]);
const Q14 = henkan(values[i][16]);
const Q15 = henkan(values[i][17]);
const Q16 = henkan(values[i][18]);
const Q17 = henkan(values[i][19]);
const Q18 = henkan(values[i][20]);
//集計
const kiso = (Q2+Q3+Q4+Q5+Q6)/5;
const fukai = (Q13+Q14+Q15+Q16+Q17+Q18)/6;
const sakumi = (Q10+Q11+Q12)/3;
const zenpan = (Q1+Q7+Q8+Q9)/4;
//作成済のフラグ
const rangeNumber = i + 1;
sheet.getRange(rangeNumber, 22) //上だと"21"だがここでは"22"で同じセルを指定していることになる!!!
.clearContent()
.setValue('作成済');
//味のスコアをスプレッドシートに入力
//もとのフォームにはない変数をスプレッドシートに列を加える形で新規作成している
sheet.getRange(rangeNumber, 23)
.clearContent()
.setValue(kiso);
sheet.getRange(rangeNumber, 24)
.clearContent()
.setValue(fukai);
sheet.getRange(rangeNumber, 25)
.clearContent()
.setValue(sakumi);
sheet.getRange(rangeNumber, 26)
.clearContent()
.setValue(zenpan);
//取得したメアドにスコアとコメントを送る
const sourceDocument = DocumentApp.openById('テンプレートドキュメントのID');
const docText = sourceDocument.getBody().getText();
const body = docText
.replace('{Value1}',name)
.replace('{Value2}',kiso)
.replace('{Value3}',fukai)
.replace('{Value4}',sakumi)
.replace('{Value5}',zenpan);
const subject = '化学療法に伴う味覚変化評価スケール'
GmailApp.sendEmail(email,subject,body);
}//if
}//for
}//end
最後に
時計ボタンを押して、トリガー設定を忘れないように。