【GAS】Google Apps Script 活用事例 Google Formsの質問項目のプルダウンをSpreadsheetと同期する方法
ひょっとしたら、プルダウンの項目生成も、GASで出来ちゃったりする?
実務で、スタッフへの消耗品の備品配布の業務があります。担当者が、勘で実務に当たっていたり、本人の意にそぐわない異動、半年程度の短期間の退職が相次ぐ会社なので、前任者がどう管理していたか、どの備品をどれくらい使って、在庫が今どのくらいあるのか、発注量が、どのくらいが適切なのかが分からない。
そこで業務改善の一環として、備品入力のFormsを作りました。その際にプルダウンの選択肢をGASで定期的に更新出来るようにしました。
(※2020年7月末で、自分も退職済み)
スクリプトは、こんな感じ
function renewGoogleFormsItem() {
const form = FormApp.openById('*************************');
const items = form.getItems();
const section = choiceValues();
console.log(section);
//デバック用Google Formsの質問名と、IDを取得
for(let i = 0; i < items.length; i++){
const item = items[i];
const itemName = item.getTitle();
const itemId = item.getId();
console.log(`質問名 ${itemName}, \n質問のID ${itemId}`);
//スプレッドシートのシェアハウスDBから内容を読み取って、Formの項目を更新する。
if(itemName == '部署'){
items[i].asListItem().setChoiceValues(section);
}//if
}//for
}//end
//シートから、Formsの選択肢を生成
function choiceValues() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('都市名');
const lastRow = sheet.getLastRow();
const values = sheet.getRange(1, 1, lastRow, 1).getValues();
values.shift();
return values
}
スプレッドシートのA列(シュタインズ・ゲートです....。)
実行するとGoogle Formsの選択肢が同期されます。
実行する時に、プルダウンになっているかを確認してください。
ここがプルダウンになっていないとエラーになってしまいます。
1から100までを生成するスクリプト
スクリプトで出来るという事を知らなかった頃、1,2,3,4,5.....と地道に打ち込んでプルダウンを作っていました。辛い作業も、このスクリプトでおさらばです。
function OneAndOnehundred(){
let array = [];
for(let i = 0; i <= 100; i++){
if(0 < i){
array.push(i);
}//if
}//for
console.log(array);
const form = FormApp.openById('********************');
const items = form.getItems();
const targetArray = ['風邪薬','頭痛薬', 'バンドエイド', '整腸剤'];
for(const item of items){
const itemName = item.getTitle();
if(targetArray.indexOf(itemName) !== -1){
item.asListItem().setChoiceValues(array);
}//if
}//for
}//end
下記に、仮に作成した、Google Formsを公開しています。特定の項目だけプルダウンを更新するようにしています。
const targetArray = ['風邪薬','頭痛薬', 'バンドエイド', '整腸剤'];
風邪薬、頭痛薬など、質問項目が、これに該当しないと、更新されない仕組みにしています。
前職は、労働集約系のサービス業の事務職だったので、上記のような備品配布業務は、割と特殊かと思います。むしろ総務とか?常備薬の利用記録とかであれば、使えるシーンがあるかなと思って作りました。
実際のGoogle Formsを公開しています。
閲覧権限は、付与できますが、編集権限は付与できません。
他にも、こんな記事書いています。
この記事が気に入ったらサポートをしてみませんか?