Googleフォームのプルダウン項目をリスト化して作業効率化

## Google Spread Sheetからプルダウンに追加される様子

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">イベントの受付業務をGoogleFormsで作成。<br>50店舗分のプルダウンをGAS（GoogleAppsScript）でらくらく作成。<a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/%E6%A5%AD%E5%8B%99%E5%8A%B9%E7%8E%87%E5%8C%96?src=hash&amp;ref_src=twsrc%5Etfw">#業務効率化</a> <a href="https://twitter.com/hashtag/GAS?src=hash&amp;ref_src=twsrc%5Etfw">#GAS</a> <a href="https://twitter.com/hashtag/GoogleAppsScript?src=hash&amp;ref_src=twsrc%5Etfw">#GoogleAppsScript</a> <a href="https://twitter.com/hashtag/GoogleForms?src=hash&amp;ref_src=twsrc%5Etfw">#GoogleForms</a> <a href="https://twitter.com/hashtag/GoogleSpreadSheet?src=hash&amp;ref_src=twsrc%5Etfw">#GoogleSpreadSheet</a> <a href="https://t.co/7vDOdSFtZH">pic.twitter.com/7vDOdSFtZH</a></p>&mdash; 宮部光博 (@MitsuhiroM82423) <a href="https://twitter.com/MitsuhiroM82423/status/1704055586567102862?ref_src=twsrc%5Etfw">September 19, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

みなさん、こんにちは。
紙、印鑑、手作業に埋もれて業務をしている昭和男子の会社員です。

**Googleフォーム**って簡単に作成できて、アンケートや出欠確認などデータ収集に使いやすく、しかも無料です。集計も自動で行ってくれて、グラフ化も自動なので便利です。
しかし、**回答方法をしっかり統一しないとデータにばらつき**が出てしまうので、注意が必要です。
例えば、「会社名を記入してください。」と記述式に回答依頼をすると、「株式会社○○」とか「㈱○○」、「（株）○○」、「○○」と同じ会社なのにデータ上は、**違う認識**となってしまい集計結果が正しくなりません。

そんな時は、**プルダウンでの選択式**にすると正しいデータとなるので便利です。なので、私は、会社の所属店舗名の回答依頼するときは、プルダウンを使用します。が、たくさんの店舗が存在し、毎回毎回、1店舗づつ手作業で入力していくのも大変です。
そこで、**Google Spread Sheetに店舗名をリスト化**し、<font color="blue">**GAS（Google Apps Script）** <font color="black">を使用することで、簡単にプルダウン項目が追加できます。

## 参考にさせていただいた記事はこちら

[**プルダウン項目をスプレッドシートから追加**![2023-09-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/19c81003-2f4e-8142-60c8-a147caedd9f8.png)
](https://technical.verybestcbp.com/addformitem/#google_vignette)

動画での解説付きでとてもわかりやすいです。👍

## 作り方

**使用するもの**
　・Google Forms
　・Google Spread Sheet
　・Google Apps Script

**①Google Formsで質問を作成**
![2023-09-19 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/e11405d0-f090-230c-d517-f2341f62e341.png)

**②Google Spread Sheetで店舗一覧表を作成**

![2023-09-19 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/043c9227-e973-d78f-bdda-9720579e1818.png)

**③Google Apps Scriptを開く**
![2023-09-19 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/15c0b8bb-4750-6fce-5a55-23b843908d11.png)

![2023-09-19 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/a32cf762-5aef-2e21-d7b5-51e606dba868.png)


**④下記のスクリプトを貼り付ける**

<font color="blue">**スクリプト**
```ruby:プルダウン項目をスプレッドシートから追加
const FORMID = '******************************************'   //① GoogleフォームのID
const ITEMNAME = '項目名'                                      //② 項目のタイトル
const SHEETNAME = 'シート1'                                    //③ 読み込むシート名


/**
 * Googleフォームのプルダウンリストに項目を追加する
 */
function AddGoogleFormsListItem() {
  const form = FormApp.openById(FORMID)
  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 == ITEMNAME) {
      items[i].asListItem().setChoiceValues(section)
    }//if
  }//for
}//end


//Googleシートから、プルダウンリストの選択肢を取得する
function choiceValues() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEETNAME)
  const lastRow = sheet.getLastRow()
  const values = sheet.getRange(1, 1, lastRow, 1).getValues()
  values.shift()

  return values
}
```
**⑤スクリプトの最初の3行を変更する**

:::note warn
const FORMID = '`***********************`'   //① <font color="blue">GoogleフォームのID

const ITEMNAME = '`項目名`'                  //② <font color="blue">項目のタイトル

const SHEETNAME = '`シート1`'                //③ <font color="blue">読み込むシート名
:::

① GoogleフォームのIDは、赤矢印の間のところをコピーし、貼り付ける
![2023-09-19 (5) - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/cdd7f23f-6a1e-4e59-101f-655866bec9b2.png)
② 項目のタイトルは、質問の赤丸のところをコピーし、貼り付ける。
![2023-09-19 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288463/2963238f-e5e7-dc4e-2949-009e4e6c81b5.png)
③ 読み込むシート名は、Google Spread Sheetの赤丸のシート名をコピーし、貼り付ける。

## イベントの受付業務をGoogle Formsで作成
今回は、**イベントの受付業務**を、スマホでQRコードを読み込んでいただき受付をするという**業務改善をGoogle Forms**で行いました。
これまでは、事前に名簿を用意して、手作業で紙にチェックを入れて受付をしていました。一度に来場されると、紙にチェックを入れるだけとはいえ、行列が出来ました。
店舗名と氏名を入力するだけの受付ですが、氏名はともかく**店舗名を簡単にプルダウン項目化**ができ、正しいデータ収集が可能になりました。
「**ちりも積もれば、山となる**」を心がけて業務改善を積み重ねていきたいです。
ファイト！💪