GAS Form.addListItemで顧客情報を効率管理!マーケティング自動化
本記事では、Google Apps Script(GAS)のForm.addListItem関数を活用して、顧客情報を効率的に管理し、マーケティング活動を自動化する方法について解説します。特に、顧客アンケートやキャンペーン応募フォームなどで、リスト形式の質問項目を動的に追加するシナリオに焦点を当て、具体的なコード例とトラブルシューティングを紹介します。
Form.addListItemとは?
Form.addListItemは、Googleフォームにリスト形式の質問項目(ラジオボタン、プルダウンメニューなど)をプログラムで追加するためのGAS関数です。アンケート内容を動的に変更したい場合や、外部データに基づいて選択肢を生成したい場合に非常に役立ちます。
マーケティングにおける利用シチュエーション
マーケティングにおいては、顧客の属性や行動履歴に基づいてアンケート内容をパーソナライズしたり、キャンペーンごとに異なる選択肢を提供したりする際に、Form.addListItemが有効です。例えば、以下のような業務課題を解決できます。
- 顧客の興味関心に応じた質問項目を自動的に表示する。
- キャンペーン期間中に、新商品に関するアンケートを自動的に追加する。
- 過去の回答に基づいて、回答済みの質問項目を非表示にする。
実装方法
基本的な実装手順は以下の通りです。
- GoogleフォームのIDを取得する。
- GASエディタでスクリプトを作成する。
FormApp.openById(フォームID)でフォームを開く。form.addListItem(質問のタイトル)でリスト形式の質問項目を追加する。item.setChoices(選択肢の配列)で選択肢を設定する。
実用的なコード例
例1:顧客の興味関心に応じた質問項目の動的追加
顧客の過去の購買履歴に基づいて、興味のある商品カテゴリーを質問項目として追加する例です。
function addInterestCategoryQuestion() {
// フォームIDを設定
const formId = 'YOUR_FORM_ID';
// 顧客ID(実際にはスプレッドシートなどから取得)
const customerId = '12345';
// 顧客の購買履歴(実際にはデータベースなどから取得)
const purchaseHistory = ['electronics', 'books', 'clothing'];
// フォームを開く
const form = FormApp.openById(formId);
// リスト項目のタイトル
const questionTitle = '興味のある商品カテゴリーを選択してください';
// 選択肢の配列を生成
const choices = purchaseHistory.map(category => FormApp.createChoice(category));
// リスト項目を追加
const item = form.addListItem(questionTitle);
item.setChoices(choices);
Logger.log('質問項目を追加しました。');
}
例2:キャンペーン期間中にアンケート項目を追加
特定のキャンペーン期間中に、新商品に関するアンケート項目を自動的に追加する例です。
function addCampaignQuestion() {
// フォームIDを設定
const formId = 'YOUR_FORM_ID';
// キャンペーン期間
const startDate = new Date('2024-01-01');
const endDate = new Date('2024-01-31');
// 現在の日付
const currentDate = new Date();
// キャンペーン期間中かどうかを判定
if (currentDate >= startDate && currentDate <= endDate) {
// フォームを開く
const form = FormApp.openById(formId);
// リスト項目のタイトル
const questionTitle = '新商品に関するご意見をお聞かせください';
// 選択肢の配列
const choices = [
FormApp.createChoice('非常に良い'),
FormApp.createChoice('良い'),
FormApp.createChoice('普通'),
FormApp.createChoice('悪い'),
FormApp.createChoice('非常に悪い')
];
// リスト項目を追加
const item = form.addListItem(questionTitle);
item.setChoices(choices);
Logger.log('キャンペーンアンケート項目を追加しました。');
} else {
Logger.log('キャンペーン期間外です。');
}
}
例3:過去の回答に基づいて質問項目を非表示にする
過去の回答に基づいて、回答済みの質問項目を非表示にする例です。(この例ではフォームの編集はできませんが、回答に基づいて後続の処理を変更するイメージです)
function processFormResponse(e) {
// 回答を取得
const responses = e.response.getItemResponses();
// 回答内容に基づいて処理を分岐
for (const response of responses) {
const questionTitle = response.getItem().getTitle();
const answer = response.getResponse();
// 特定の質問に対する回答に基づいて処理を変更
if (questionTitle === '興味のある商品カテゴリーを選択してください') {
if (answer === 'electronics') {
// 電子機器に興味のある顧客に対する処理
Logger.log('電子機器に興味のある顧客');
} else {
// その他の顧客に対する処理
Logger.log('その他の顧客');
}
}
}
}
よくある問題とトラブルシューティング
- フォームIDが間違っている:
FormApp.openById()に正しいフォームIDを指定しているか確認してください。 - 権限の問題:スクリプトを実行するアカウントに、フォームへのアクセス権があるか確認してください。
- 選択肢が重複している:選択肢の配列に重複がないか確認してください。
カスタマイズ方法と応用例
- スプレッドシート連携:スプレッドシートのデータを読み込み、選択肢を動的に生成する。
- データベース連携:顧客データベースから情報を取得し、アンケート内容をパーソナライズする。
- 条件分岐:回答内容に応じて、表示する質問項目を切り替える。
まとめ
Form.addListItemを効果的に活用することで、顧客情報を効率的に管理し、マーケティング活動を自動化できます。本記事で紹介したコード例やトラブルシューティングを参考に、ぜひご自身の業務に活用してみてください。

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