見出し画像

【GAS】Google Apps Script 活用事例 Google Formsの回答結果から条件に沿った回答者を表示するスクリプト

回答結果から条件に沿った人のみを表示する

スクリーンショット 2022-09-03 17.30.47

Google Formsで得られた回答結果を条件ごとに社内wikiにまとめたり、グラフを貼り付けたり体裁を整える仕事があり、このスクリプトを書きました。

スクリプト全文

function onOpen() {
   SpreadsheetApp.getUi()
  .createMenu('追加メニュー')
  .addItem('Q1の選択肢を選んだ理由について', 'question1')
  .addToUi();
}


function question1(){
 const ui     = SpreadsheetApp.getUi();
 const prompt = showPrompt_(ui, 'Q1の選択肢を選んだ理由について', 'とても満足 or 普通 or 面白くなかった');
 generateHtmlParagraph_(prompt);
}



/**
* 入力画面に応じて、該当するアンケート結果を表示する
* 
* @param  {string} prompt - 入力させた文字列
* @return {string} HTMLを表示する
*/

function generateHtmlParagraph_(prompt) {
 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 const sheet       = spreadsheet.getSheetByName('アンケート結果');
 const values      = sheet.getDataRange().getDisplayValues();
 const header      = values.shift();
 // console.log(header);
 
 const column = {
   name: header.indexOf('お名前'),
   q1:   header.indexOf('Q1.先日のイベントの満足度について教えてください'),
   q2:   header.indexOf('Q2. Q1の理由について教えてください'),
 }
 console.log(column);

 let string = '';

 for(let i = 0; i < values.length; i++){
   if(!values[i][0])continue
   console.log(values[i]);

   if(values[i][column.q1] === prompt){
     string += `<p>・ ${values[i][column.q2]} (${values[i][column.name]}さん)</p>`;
   }
 }//for
 console.log(string);

 const ui   = SpreadsheetApp.getUi();
 const html = HtmlService.createHtmlOutput(string)
 .setWidth(600)
 .setHeight(1000);

 ui.showModelessDialog(html, 'htmlを表示するよ');
}


/**
* 入力画面を表示させる
* 
* @param  {Object} ui     - SpreadsheetApp
* @param  {string} title  - 入力画面のタイトル
* @param  {string} sample - 記入例
* @return {string} 入力内容
*/

function showPrompt_(ui, title, sample) {
 const response = ui.prompt(title, sample, ui.ButtonSet.OK);
 const input    = response.getResponseText();

 console.log(input);

 switch (response.getSelectedButton()){
   case ui.Button.OK:
   console.log(`${input}と入力されました。`);
   break;
 case ui.Button.CLOSE:
   console.log('閉じるボタンが押されました。');
   break;
 default:
   console.warn('処理が中断されました。');
 }//switch

 return input

}



この記事が気に入ったらサポートをしてみませんか?