【GAS】GoogleフォームのItemTypeの一覧|getItemsとgetTypeの使い方を実例で解説(App Script, 引数の指定方法)

Google form フォーム GAS-prograshi(プロぐらし)-kv AppsScript
記事内に広告が含まれていることがあります。

Google App Script(GAS)でGoogleフォームを編集するときに、既にフォームの中にある設問を取得する必要があります。

そのとき、getItemsByIdでアイテム(各設問)のIDを指定して取得したり、getItemsで全ての設問を取得することもできます。

それ以外にgetItems(itemType)で、CHECKBOXなどのアイテムタイプを指定して、該当する設問のみを取得することもできます。

ここではGoogleフォームで使えるitemTypeの一覧や、getItems(itemType), getTypeの利用例を実例で解説しています。


Googleフォームで使えるitemTypeの一覧

Googleフォームでは各セクションをitemTypeとして識別することができます。

itemType対象のアイテム
CHECKBOXチェックボックス。複数選択可
CHECKBOX_GRID列と行のグリッド質問。一連のチェックボックスから行ごとに複数の選択肢を選択する
DATE日付選択の質問
DATETIME日時選択の質問
DURATION回答時間の長さの質問
GRID列と行のグリッド質問。一連のラジオボタンから行ごとに 1 つの選択肢を選択する
IMAGE画像を表示するレイアウトアイテム
LISTプルダウン。1つ選択
MULTIPLE_CHOICEラジオボタン。1つ選ぶ
PAGE_BREAKページの始点を示すレイアウトアイテム
PARAGRAPH_TEXT長文入力の質問
SCALE一連のラジオボタンから 1 つの選択肢を回答者に選択する質問
SECTION_HEADERセクションの開始を視覚的に示すレイアウト アイテム。
TEXTテキスト入力の質問
TIME時間帯入力の質問
VIDEOYouTube 動画を表示するレイアウト アイテム。
FILE_UPLOADファイルをアップロードできる質問アイテム。


なお、itemTypeはそのままでは使えず、FormApp.ItemTypeのプロパティとして指定します。

FormApp.ItemType.アイテムタイプ


例えば以下のように指定します。

FormApp.ItemType.CHECKBOX


▼実例

if (item.getType() == FormApp.ItemType.SECTION_HEADER) {
  処理;
}
const itemsCheckBox = form.getItems(FormApp.ItemType.CHECKBOX);


(参考)AppScript > Enum ItemType


getItems(itemType)

基本構文

getItems(itemType)

Formクラスの中のgetItems(itemType)メソッドを使うと、対象のフォームの中の設問のうち指定したitemTypeに一致するアイテムのみを取得することができます。

なお、引数を指定しない場合はすべてのアイテムを取得します。


実例

function editForm() {
  const formId = "フォームのID";
  const form = FormApp.openById( formId );

  const itemsCheckBox = form.getItems(FormApp.ItemType.CHECKBOX);
  const checkBox1 = itemsCheckBox[0];
  checkBox1.setTitle( "参加者を選択してください" );
}


この処理では、フォームの中の1つ目のチェックボックスに対して質問(タイトル)を設定しています。


(参考)AppScript > Class Form > getItems(itemType)


getType()

getType()

Itemインターフェースの中のgetTypeメソッドを使うと、対象のアイテムのItemTypeを取得することができます。


型の種類(CHECKBOX)などを判定したい場合はnameメソッドを使う必要があります。

getType().name()


実例1

function editForm() {
  const formId = "フォームのID";
  const form = FormApp.openById( formId );
  
  const items = form.getItems();

  items.forEach(item => {
    const itemType = item.getType().name();
    console.log(itemType);
  })
}

getItemsでフォーム内の全てのアイテムを取得し、item.getType().name()でCHECKBOXやGRID型の名前を取得しています。

実例2

function deleteItem() {
  const form = FormApp.openByUrl('https://docs.google.com/forms/d/abc123456/edit');
  const items = form.getItems();

  const index = items.findIndex(item => item.getType() === FormApp.ItemType.PARAGRAPH_TEXT);
  if (index !== -1) {
    form.deleteItem(index);
  }
}

getItmesメソッドでフォームの全てのアイテムを取得しています。

JavaScriptのfindIndexメソッドを使って、ItemTypeがPARAGRAPH_TEXT、つまり、長文テキストとなっている1番最初のアイテムのインデックス番号を取得しています。

deleteItemでその設問を削除しています。

なお、findIndexメソッドでは該当する項目がない場合は「-1」を返します。


(参考)AppScript > Interface Item > getType



タイトルとURLをコピーしました