FormApp.createで始める!GASによるデータ分析レポート自動生成

FormApp.createで始める!GASによるデータ分析レポート自動生成

データ分析は、現代のビジネスにおいて不可欠な要素です。しかし、レポート作成やグラフ生成などの作業は、時間と労力を要するだけでなく、人的ミスも起こりやすいです。そこで、Google Apps Script(GAS)のFormApp.create関数を利用することで、これらの作業を自動化し、効率的かつ正確なデータ分析を実現できます。この記事では、FormApp.create関数を活用して、データ分析レポートを自動生成する方法を詳しく解説します。

FormApp.create関数の基本

FormApp.create(title)は、新しいGoogleフォームを作成するための関数です。この関数を使うことで、スプレッドシートなどのデータを基に、自動でフォームを作成し、データの収集や分析を効率化することができます。

構文

FormApp.create(title)

  • title:作成するフォームのタイトル(文字列)

戻り値

作成されたフォームオブジェクト(Form)。このオブジェクトを使用して、フォームに質問を追加したり、設定を変更したりすることができます。

データ分析レポート自動生成の実装方法

ここでは、FormApp.create関数を用いて、データ分析レポートを自動生成する具体的な方法を解説します。

1. データ収集フォームの自動作成

まず、データ収集のためのフォームを自動作成します。例えば、顧客満足度調査やアンケートなどのフォームを、スプレッドシートのデータに基づいて自動生成することができます。

function createDataCollectionForm(title, questions) {
// フォームを作成
const form = FormApp.create(title);

// 質問を追加
questions.forEach(question => {
form.addTextItem().setTitle(question);
});

// フォームを公開
form.setPublished(true);

// フォームのURLを返す
return form.getPublishedUrl();
}

// 使用例
function testCreateDataCollectionForm() {
const title = "顧客満足度調査";
const questions = ["商品の品質について", "価格について", "サポート体制について"];
const formUrl = createDataCollectionForm(title, questions);
Logger.log(formUrl);
}

2. レポート生成用フォームの作成

次に、収集したデータを基にレポートを生成するためのフォームを作成します。このフォームには、分析結果を表示するための質問や、グラフを表示するためのイメージが含まれます。

function createReportForm(title, reportData) {
// フォームを作成
const form = FormApp.create(title);

// レポートデータを追加
reportData.forEach(item => {
form.addSectionHeaderItem().setTitle(item.title);
form.addParagraphTextItem().setTitle(item.description);
if (item.image) {
form.addImageItem().setImage(Utilities.newBlob(item.image, "image/png"));
}
});

// フォームを公開
form.setPublished(true);

// フォームのURLを返す
return form.getPublishedUrl();
}

// 使用例
function testCreateReportForm() {
const title = "データ分析レポート";
const reportData = [
{title: "売上分析", description: "今月の売上は先月比で10%増加しました。", image: null},
{title: "顧客分析", description: "新規顧客の獲得数が5%増加しました。", image: null}
];
const formUrl = createReportForm(title, reportData);
Logger.log(formUrl);
}

3. 統計処理とグラフ生成

収集したデータを基に、統計処理を行い、グラフを生成します。GASには、スプレッドシートのデータを操作するためのAPIが豊富に用意されており、これらを活用することで、様々な統計処理やグラフ生成を簡単に行うことができます。

function generateStatistics(data) {
// データの平均値を計算
const sum = data.reduce((a, b) => a + b, 0);
const average = sum / data.length;

// データの標準偏差を計算
const squaredDifferences = data.map(value => Math.pow(value - average, 2));
const variance = squaredDifferences.reduce((a, b) => a + b, 0) / data.length;
const standardDeviation = Math.sqrt(variance);

// 結果を返す
return {average: average, standardDeviation: standardDeviation};
}

function generateChart(data, title) {
// スプレッドシートを作成
const spreadsheet = SpreadsheetApp.create(title);
const sheet = spreadsheet.getActiveSheet();

// データを書き込む
sheet.getRange(1, 1, data.length, 1).setValues(data.map(value => [value]));

// グラフを作成
const chart = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(sheet.getDataRange())
.setPosition(5, 1, 0, 0)
.build();

// チャートを返す
return chart.getBlob().getDataAsString();
}

// 使用例
function testGenerateStatisticsAndChart() {
const data = [10, 20, 30, 40, 50];
const statistics = generateStatistics(data);
Logger.log("平均値: " + statistics.average);
Logger.log("標準偏差: " + statistics.standardDeviation);

const chartImage = generateChart(data, "データ分布");
Logger.log("グラフ: " + chartImage);
}

実用的なコード例

ここでは、実際の業務で使える実装例を紹介します。

例1:日次売上レポートの自動生成

毎日の売上データを収集し、日次売上レポートを自動生成します。このレポートには、売上金額、売上件数、平均単価などが含まれます。

function generateDailySalesReport() {
// 売上データを取得
const salesData = getSalesData();

// レポートデータを生成
const reportData = {
date: new Date(),
salesAmount: salesData.reduce((a, b) => a + b.amount, 0),
salesCount: salesData.length,
averagePrice: salesData.reduce((a, b) => a + b.amount, 0) / salesData.length
};

// フォームを作成
const form = FormApp.create("日次売上レポート");
form.addSectionHeaderItem().setTitle("売上概要");
form.addParagraphTextItem().setTitle("日付").setHelpText(reportData.date);
form.addParagraphTextItem().setTitle("売上金額").setHelpText(reportData.salesAmount + "円");
form.addParagraphTextItem().setTitle("売上件数").setHelpText(reportData.salesCount + "件");
form.addParagraphTextItem().setTitle("平均単価").setHelpText(reportData.averagePrice + "円");

// フォームを公開
form.setPublished(true);

// フォームのURLを返す
return form.getPublishedUrl();
}

// 売上データを取得する関数(例)
function getSalesData() {
// スプレッドシートからデータを取得するなどの処理を記述
return [
{amount: 1000},
{amount: 2000},
{amount: 3000}
];
}

例2:顧客満足度調査の自動実施と結果レポート生成

顧客満足度調査を自動で実施し、収集したデータを基に結果レポートを生成します。このレポートには、各質問に対する回答の平均値や、顧客のコメントなどが含まれます。

function conductCustomerSatisfactionSurvey() {
// フォームを作成
const form = FormApp.create("顧客満足度調査");
form.addSectionHeaderItem().setTitle("アンケート");
form.addRadioItem().setTitle("商品の品質に満足していますか?").setChoices(["はい", "いいえ"]);
form.addTextItem().setTitle("ご意見・ご要望");

// フォームを公開
form.setPublished(true);

// フォームのURLを取得
const formUrl = form.getPublishedUrl();

// フォームの回答を収集するトリガーを設定(例:毎日午前9時に実行)
ScriptApp.newTrigger("generateCustomerSatisfactionReport")
.timeBased()
.atHour(9)
.everyDays(1)
.create();

// フォームのURLを返す
return formUrl;
}

function generateCustomerSatisfactionReport() {
// フォームの回答を取得
const form = FormApp.openByUrl("フォームのURL");
const responses = form.getResponses();

// レポートデータを生成
const reportData = {
responseCount: responses.length,
satisfactionRate: responses.filter(response => response.getItemResponses()[0].getResponse() === "はい").length / responses.length
};

// レポートを作成
const reportForm = FormApp.create("顧客満足度調査レポート");
reportForm.addSectionHeaderItem().setTitle("調査結果");
reportForm.addParagraphTextItem().setTitle("回答数").setHelpText(reportData.responseCount + "件");
reportForm.addParagraphTextItem().setTitle("満足度").setHelpText(reportData.satisfactionRate + "%");

// フォームを公開
reportForm.setPublished(true);

// フォームのURLを返す
return reportForm.getPublishedUrl();
}

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

  • フォームが作成されない:FormAppサービスが有効になっているか確認してください。
  • フォームに質問が追加されない:質問のタイトルが正しく設定されているか確認してください。
  • フォームが公開されない:権限設定が正しく行われているか確認してください。

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

  • フォームのデザインを変更する:FormオブジェクトのsetTheme()メソッドを使用することで、フォームのデザインを変更することができます。
  • フォームの回答を自動でスプレッドシートに保存する:onFormSubmitトリガーを使用することで、フォームの回答を自動でスプレッドシートに保存することができます。
  • フォームの回答を基に、自動でメールを送信する:onFormSubmitトリガーとMailAppサービスを使用することで、フォームの回答を基に、自動でメールを送信することができます。

まとめ

この記事では、FormApp.create関数を活用して、データ分析レポートを自動生成する方法について解説しました。GASを活用することで、データ分析の効率化を図り、より高度な分析に注力することができます。ぜひ、この記事を参考にして、GASによるデータ分析レポートの自動生成に挑戦してみてください。

PR

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

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