見出し画像

【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列(シュタインズ・ゲートです....。)

スクリーンショット 2020-06-20 12.20.59

実行するとGoogle Formsの選択肢が同期されます。

スクリーンショット 2020-06-20 12.22.24

実行する時に、プルダウンになっているかを確認してください。

スクリーンショット 2020-06-20 12.22.55

ここがプルダウンになっていないとエラーになってしまいます。

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を公開しています。

閲覧権限は、付与できますが、編集権限は付与できません。

他にも、こんな記事書いています。


この記事が参加している募集

スキしてみて

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