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 | 時間帯入力の質問 |
VIDEO | YouTube 動画を表示するレイアウト アイテム。 |
FILE_UPLOAD | ファイルをアップロードできる質問アイテム。 |
なお、itemTypeはそのままでは使えず、FormApp.ItemTypeのプロパティとして指定します。
FormApp.ItemType.アイテムタイプ
例えば以下のように指定します。
FormApp.ItemType.CHECKBOX
▼実例
if (item.getType() == FormApp.ItemType.SECTION_HEADER) {
処理;
}
const itemsCheckBox = form.getItems(FormApp.ItemType.CHECKBOX);
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