0
0

More than 3 years have passed since last update.

Google Formを使って、QOL尺度での評価とフィードバックを自動化

Posted at

過去記事の応用として
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

CITAS.gs
/*最初に文字データを数字に変換する関数を定義します*/
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    

最後に

時計ボタンを押して、トリガー設定を忘れないように。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0