サイトアイコン Googleスプレッドシート 完全攻略

Googleフォーム・プルダウンの項目を1分おきに更新する方法

Googleフォーム関連

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

Googleフォーム プルダウン(ドロップダウン)リストの項目をスプレッドシートから読み込んで追加する方法
  • Googleフォームのプルダウンの項目をスプレッドシートから読み込んで、追加することができます。
  • GASって何?状態であってもコピペでできます。
  • 今回は、とっても価値の高い方法をお伝えします。


    これを知ることであなたは、

    なので、サクッとマスターして

    と答えてあげてください。

    ご質問

    B列(プルダウン形式)とF列(プルダウン形式)の選択肢それぞれが共にプルダウン形式のためAddGFormItems_Listという関数を使用して設定することになるかと思うのですが、ITEMNAMEは1つしか設定できないようです。 トリガー設定はそれぞれ違う関数名で設定が必要かと思いました。 動的に更新されるようトリガー設定をB列は一ヶ月に一回1日の0~1時で設定したいです。 F列は毎分の更新頻度にしたいです。 プルダウン形式で設定したい項目が複数あり、それぞれが違う更新頻度の場合のGASスクリプトの変更箇所を教えて頂けましたら幸いです。

    動画はこちら

    シートはこちら

    *クリックすることでシートが開きます。(コピーしてお使いください)

     

    スクリプト

    
    const FORM_ID = "★★フォームID★★"  // ★フォームIDを入力
    const SP_ID = '★★スプレッドシートID★★'    //★スプレッドシートID
    
    
    
    // 選択肢リストを追加 === 
    const SH_NAME = "選択肢リスト"    //★名前付き範囲のシート名
    const ITEMNAME_F = '初回ご相談希望日時'   //★② 項目のタイトル&名前付き範囲の名称
    const ITEMNAME_B = 'ご利用希望月'        //★② 項目のタイトル&名前付き範囲の名称
    
    //③以下のいずれかを呼び出す
    //AddGFormItems_List    //プルダウン
    //AddGFormItems_Check   //チェックボックス
    //AddGFormItems_Radio   //ラジオボタン
    
    
    
    
    
    const ITEM_LIST = 1
    const ITEM_CHEKBOX = 2
    const ITEM_RADIO = 3
    
    
    //項目Bを追加する
    function AddGFormItems_List_B() {
      AddGoogleFormItems(ITEM_LIST, ITEMNAME_B)
    }
    
    
    //項目Fを追加する
    function AddGFormItems_List_F() {
      AddGoogleFormItems(ITEM_LIST, ITEMNAME_F)
    }
    
    
    
    function test() {
    
    
    const itemName = ITEMNAME_F
    
    
    
    
     let section = SpreadsheetApp.openById(SP_ID).getRangeByName(SH_NAME+'!'+itemName).getValues()
    //  let section = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(itemName).getValues()
    
    
     console.log(section)
    
    
    
      // AddGoogleFormItems(ITEM_LIST,ITEMNAME_F)
    
    
    }
    
    
    
    // ラジオボタンの項目を追加する
    function AddGFormItems_Radio() {
      AddGoogleFormItems(ITEM_RADIO)
    }
    
    
    // プルダウンの項目を追加する
    function AddGFormItems_List() {
      AddGoogleFormItems(ITEM_LIST)
    }
    // チェックボックスの項目を追加する
    function AddGFormItems_Check() {
      AddGoogleFormItems(ITEM_CHEKBOX)
    }
    
    
    
    
    
    
    
    /**
     * AddGoogleFormItems
     * Googleフォームのプルダウンリスト、チェックボックス、リストボックスに項目を追加する
     *
     * @param  {integer} itemkind 項目の種別
     * @param {string} itemName - Googleformにおける項目の名前
     * @return
     * @customfunction
     * */
    function AddGoogleFormItems(itemkind, itemName) {
      const form = FormApp.openById(FORM_ID)
      const items = form.getItems()
    
    
     let section = SpreadsheetApp.openById(SP_ID).getRangeByName(SH_NAME+'!'+itemName).getValues()
    
    
      section = section.filter(v => v[0])
    
    
      for (let i = 0; i < items.length; i++) {
        const item = items[i]
        // const itemName = item.getTitle()
        const itemId = item.getId()
    
    
        if (item.getTitle() == itemName) {
          switch (itemkind) {
            case ITEM_LIST:
              console.log(section)
              items[i].asListItem().setChoiceValues(section)  //プルダウンメニュー
              break
            case ITEM_CHEKBOX:
              items[i].asCheckboxItem().setChoiceValues(section)  //チェックボックス
              break
            case ITEM_RADIO:
              items[i].asMultipleChoiceItem().setChoiceValues(section) //ラジオボタン
              break
          }
        }
      }
    }
    
    

     

     

     

    ポイント

    トリガーからは、getActiveSheet()が使用できないので
    openById()を使用してスプレッドシートを取得します。

    ところが、openById()でスプレッドシートを取得すると
    getRangeByName()指定時にシート名が必要となります。
    なので
    ss.getRangeByName(SH_NAME + “!” + itemName).getValues()
    こんな感じにする必要があります。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    最後までご覧いただきありがとうございます。

    つぎはこちら

    Googleフォーム 選択項目の日付を自動的に切り替える方法
  • Googleフォームで選択肢の項目を自動的に切り替えることができます。
  • トリガーの設定方法がわかります。
  • ArrayFormulaとSEQUENCE関数の効果的な使い方がわかります。
  • Googleフォーム関連

    モバイルバージョンを終了