GASでフォームのセクションを自在に操る方法:取得から指定、移動、追加まで徹底解説!


GASでフォームのセクションを取得する方法
Googleフォームのセクションとは、
フォームの中でページを区切るためのブロックのこと
だったな。ページブレークするたびに新しいセクションになる。
幸いなことに、GASを使えばフォーム内の特定のセクションを簡単に取得できるんだ。まずは取得の基本を押さえよう。
フォームサービスからフォームを取得し、セクションの一覧を取得する方法を見てみよう。
function getFormSections() {
var form = FormApp.openById('フォームID');
var items = form.getItems(FormApp.ItemType.PAGE_BREAK);
for (var i = 0; i < items.length; i++) {
Logger.log(items[i].getTitle());
}
}
このスクリプトでは、フォームのIDを指定してフォームを開き、PAGE_BREAKタイプのアイテムとしてセクションを取得している。
最終的に、各セクションのタイトルを Logger.log() でログに出力さ。
GASで特定のフォームのセクションを指定して取得する方法
次に、フォーム内の特定のセクションを指定して情報を取り出す方法を紹介しよう。
セクションのタイトルを指定して、そのセクションをピンポイントで取得するぞ。
function getSpecificSection(sectionTitle) {
var form = FormApp.openById('フォームID');
var items = form.getItems(FormApp.ItemType.PAGE_BREAK);
for (var i = 0; i < items.length; i++) {
if (items[i].getTitle() === sectionTitle) {
Logger.log("Found section: " + sectionTitle);
break;
}
}
}
getTitleメソッドでセクションのタイトルを取得し、それを条件として指定している。ピンポイントで特定のセクションを取り出せるのがこの方法だ。
GASでフォームのセクションを移動する方法
セクションを移動することもGASで可能だ。必要に応じて、フォームの構造を変更できる。
function moveSection(oldIndex, newIndex) {
var form = FormApp.openById('フォームID');
var items = form.getItems(FormApp.ItemType.PAGE_BREAK);
if (oldIndex >= 0 && oldIndex < items.length && newIndex >= 0 && newIndex < items.length) {
var item = form.moveItem(items[oldIndex], newIndex);
Logger.log('Moved item to new index: ' + newIndex);
}
}
このスクリプトは、フォーム内のセクションを新しいインデックスに移動する方法だ。moveItemメソッドを使うことで、インデックスを基準にセクションを簡単に動かせる。
GASでフォームに新たなセクションを追加する方法
新しいセクションをフォームに追加するのも、GASで非常にスムーズだ。
フォームにセクションを追加し、タイトルを設定するスクリプトを示す。
function addNewSection(title) {
var form = FormApp.openById('フォームID');
form.addPageBreakItem().setTitle(title);
Logger.log('Added new section with title: ' + title);
}
addPageBreakItemメソッドで新しいセクションをフォームに追加し、setTitleメソッドでタイトルを設定することで、自由なレイアウトが実現する。


練習問題
次のフォームに対して、特定のセクションのタイトルを「新しいセクション名」に変更するスクリプトを書いてみよう。
解答・解説
以下は、特定のセクションのタイトルを変更するスクリプトの例だ。
function renameSection(oldTitle, newTitle) {
var form = FormApp.openById('フォームID');
var items = form.getItems(FormApp.ItemType.PAGE_BREAK);
for (var i = 0; i < items.length; i++) {
if (items[i].getTitle() === oldTitle) {
items[i].setTitle(newTitle);
Logger.log('Renamed section: ' + oldTitle + ' to ' + newTitle);
break;
}
}
}
このスクリプトでは、getTitleメソッドでセクションの現在のタイトルを取得し、setTitleメソッドで新しいタイトルを設定する。フォーム内のセクションを簡単にリネームできる優れものだ。