![見出し画像](https://assets.st-note.com/production/uploads/images/86160503/rectangle_large_type_2_8d8c734e0b38a2ea87dc832d0f83817d.jpg?width=1200)
【GAS】Google Apps Script 活用事例 Google Formsの回答結果から条件に沿った回答者を表示するスクリプト
回答結果から条件に沿った人のみを表示する
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
}
この記事が気に入ったらサポートをしてみませんか?