GAS Form.addListItemでWebアプリ開発を効率化!フォーム作成、API連携、ダッシュボード構築

GAS Form.addListItemでWebアプリ開発を効率化!フォーム作成、API連携、ダッシュボード構築

Webアプリケーション開発において、フォームの作成は避けて通れない道です。特に、リスト形式で動的に項目を追加できるフォームは、API連携やダッシュボード構築など、様々なシーンで必要とされます。しかし、GAS(Google Apps Script)でこのようなフォームを実装するには、手間がかかることも事実です。

この記事では、GASのForm.addListItem関数に焦点を当て、Webアプリ開発、特にフォーム作成、API連携、ダッシュボード構築における課題を解決する方法を解説します。Form.addListItemを効果的に活用することで、開発効率を大幅に向上させ、より洗練されたWebアプリケーションを構築できます。

Form.addListItemとは?

Form.addListItemは、Googleフォームにリスト形式の質問項目を追加するためのGASの関数です。この関数を使うことで、ユーザーが複数の選択肢から一つまたは複数を選択できる質問を作成できます。動的にリスト項目を追加・変更できるため、APIから取得したデータに基づいて選択肢を生成したり、ユーザーの操作に応じて選択肢を変化させたりすることが可能です。

基本的な使い方

Form.addListItemは、Formオブジェクトに対して呼び出します。以下は、基本的な使用例です。

function createFormWithListItem() {
// フォームを作成
const form = FormApp.create('アンケートフォーム');

// リスト形式の質問を追加
const listItem = form.addListItem('好きな色を選んでください');

// 選択肢を追加
listItem.setChoices([
listItem.createChoice('赤'),
listItem.createChoice('青'),
listItem.createChoice('黄'),
]);

// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}

利用シチュエーション別の実装方法

ここでは、Form.addListItemをWebアプリ開発の様々なシチュエーションで活用する方法を解説します。

1. API連携:動的な選択肢の生成

APIから取得したデータに基づいて、フォームの選択肢を動的に生成する例です。例えば、都道府県のAPIからデータを取得し、その結果をフォームの選択肢として表示することができます。

function createFormWithApiData() {
// フォームを作成
const form = FormApp.create('都道府県選択フォーム');

// 都道府県APIからデータを取得(ここではサンプルデータ)
const prefectures = ['東京都', '大阪府', '京都府', '北海道'];

// リスト形式の質問を追加
const listItem = form.addListItem('都道府県を選んでください');

// 選択肢を動的に追加
const choices = prefectures.map(pref => listItem.createChoice(pref));
listItem.setChoices(choices);

// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}

2. ダッシュボード:ユーザー入力に基づくフィルタリング

ダッシュボード上で、ユーザーが選択した項目に基づいてデータをフィルタリングする例です。例えば、部署名を選択すると、その部署のメンバーのデータのみを表示することができます。

function createFormForDashboardFiltering() {
// フォームを作成
const form = FormApp.create('部署選択フォーム');

// 部署リスト(ここではサンプルデータ)
const departments = ['開発部', '営業部', '人事部', '広報部'];

// リスト形式の質問を追加
const listItem = form.addListItem('部署を選んでください');

// 選択肢を動的に追加
const choices = departments.map(dept => listItem.createChoice(dept));
listItem.setChoices(choices);

// 回答をスプレッドシートに送信する設定
form.setDestination(FormApp.DestinationType.SPREADSHEET, SpreadsheetApp.getActiveSpreadsheet().getId());

// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}

// スプレッドシートの回答に基づいてダッシュボードを更新する関数(サンプル)
function updateDashboard(e) {
// フォームの回答を取得
const responses = e.response.getItemResponses();

// 部署の回答を取得
const department = responses[0].getResponse();

// 部署に基づいてデータをフィルタリングする処理を実装
Logger.log('選択された部署:' + department);
// ここで、ダッシュボードのデータをフィルタリングする処理を実装します。
}

3. フォーム作成:複数項目の動的追加

フォーム上で、ユーザーがボタンをクリックするたびにリスト項目を追加できる例です。これにより、アンケートなどで回答者の状況に合わせて質問項目を増やすことができます。

function createFormWithDynamicListItems() {
// フォームを作成
const form = FormApp.create('動的リストフォーム');

// リスト形式の質問を追加(初期項目)
const listItem = form.addListItem('興味のある分野');
listItem.setChoices([
listItem.createChoice('プログラミング'),
listItem.createChoice('デザイン'),
listItem.createChoice('マーケティング'),
]);

// 「その他」の選択肢を追加して、自由記述を促すことも可能
listItem.createChoice('その他');

// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}

// HTMLサービスでフォームを実装し、GASと連携させる必要があります。
// HTML側でボタンをクリックすると、GAS側で新しいリスト項目を追加する処理を実装します。

実用的なコード例

API連携と組み合わせた、より実践的なコード例を紹介します。ここでは、外部APIから取得した書籍のタイトルをフォームの選択肢として表示する例を考えます。

function createFormWithBookTitles() {
// フォームを作成
const form = FormApp.create('書籍選択フォーム');

// 書籍APIからデータを取得(ここではOpenBDのAPIを使用)
const url = 'https://api.openbd.jp/v1/get?isbn=9784839968942,9784274050648,9784798157370'; // サンプルのISBN
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());

// 書籍タイトルを抽出
const bookTitles = data.map(item => item.summary.title);

// リスト形式の質問を追加
const listItem = form.addListItem('読みたい書籍を選んでください');

// 選択肢を動的に追加
const choices = bookTitles.map(title => listItem.createChoice(title));
listItem.setChoices(choices);

// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}

よくある問題とトラブルシューティング

  • 選択肢が正しく表示されない:APIから取得したデータの形式が想定と異なる場合や、文字コードの問題が考えられます。データの形式を確認し、必要に応じて変換処理を追加してください。
  • フォームの動作が遅い:APIからのデータ取得に時間がかかっている可能性があります。キャッシュの活用や、APIリクエストの最適化を検討してください。
  • フォームが正常に作成されない:GASの実行権限が不足している可能性があります。スクリプトエディタで権限を確認し、必要な権限を付与してください。

カスタマイズ方法と応用例

  • 選択肢の並び替え:setChoicesで設定する選択肢の配列の順序を変更することで、選択肢の表示順をカスタマイズできます。
  • 選択肢の絞り込み:ユーザーの入力に応じて、選択肢を動的に絞り込むことができます。例えば、検索ボックスに入力されたキーワードに一致する選択肢のみを表示することができます。
  • 複数選択を許可:Form.addCheckboxItemを使用することで、複数選択可能なチェックボックス形式の質問を作成できます。

まとめ

Form.addListItemは、GASで動的なフォームを作成するための強力なツールです。API連携やダッシュボード構築など、様々なWebアプリ開発の現場で活用できます。この記事で紹介したコード例やトラブルシューティングを参考に、Form.addListItemを使いこなして、より効率的なWebアプリ開発を実現してください。

PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう