中級者向け実践:一般企業でのGAS API連携による四半期レポート自動作成(部門利用)

中級者向け実践:一般企業でのGAS API連携による四半期レポート自動作成(部門利用)

本記事では、Google Apps Script(GAS)を使用して、一般企業における四半期レポートの自動作成を、API連携を通して実現する方法を解説します。対象読者は、GASの基本的な知識を持ち、API連携による業務効率化に関心のある中級者レベルのエンジニアや担当者を想定しています。部門内での情報共有、進捗管理、意思決定の迅速化に貢献できるシステム構築を目指します。

四半期レポート自動作成の概要

四半期レポートは、企業の経営状況を把握し、今後の戦略を立てる上で重要な資料です。しかし、その作成には多くの時間と労力がかかります。GASとAPI連携を利用することで、様々なシステムから必要なデータを自動的に収集し、レポート作成を効率化することができます。具体的には、以下のようなシステムからのデータ収集が考えられます。

  • SalesforceなどのCRM(顧客関係管理)システム
  • Google AnalyticsなどのWebアクセス解析ツール
  • スプレッドシートで管理している売上データ
  • 自社開発の基幹システム

これらのシステムからAPIを通じてデータを取得し、GASで加工・集計してレポートを作成します。レポートは、Googleドキュメントやスプレッドシートとして出力することが可能です。

API連携の基礎

API(Application Programming Interface)とは、ソフトウェア同士が互いにやり取りするためのインターフェースです。APIを利用することで、異なるシステム間でデータを共有したり、機能を連携させたりすることができます。GASでは、UrlFetchAppという組み込みオブジェクトを使用して、APIリクエストを送信し、レスポンスを受け取ることができます。

API連携を行うためには、以下のステップが必要です。

  1. APIの仕様を確認する(エンドポイント、リクエストパラメータ、認証方式など)
  2. GASでAPIリクエストを送信する
  3. APIレスポンスを解析する
  4. 必要なデータを抽出する

実用的なコード例:Salesforce APIとの連携

ここでは、Salesforce APIと連携して、四半期ごとの商談データを取得する例を紹介します。Salesforce APIを利用するためには、事前に開発者アカウントを作成し、APIキーを取得する必要があります。

// Salesforce APIへのリクエスト設定
const SALESFORCE_API_ENDPOINT = "https://your-salesforce-domain.com/services/data/v50.0/query/";
const SALESFORCE_ACCESS_TOKEN = "YOUR_SALESFORCE_ACCESS_TOKEN";

function getSalesforceOpportunityData(quarter) {
// SOQLクエリ(四半期を指定)
const soqlQuery = `SELECT Id, Name, Amount, CloseDate FROM Opportunity WHERE CALENDAR_QUARTER(CloseDate) = ${quarter} AND CALENDAR_YEAR(CloseDate) = THIS_YEAR`;

const headers = {
"Authorization": `Bearer ${SALESFORCE_ACCESS_TOKEN}`,
"Content-Type": "application/json"
};

const options = {
"method": "get",
"headers": headers,
"muteHttpExceptions": true // エラー発生時に例外をスローしない
};

const url = SALESFORCE_API_ENDPOINT + `?q=${encodeURIComponent(soqlQuery)}`;

// APIリクエスト送信
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());

// エラーハンドリング
if (response.getResponseCode() !== 200) {
Logger.log("Salesforce API Error: " + response.getContentText());
return null;
}

// データを返す
return json.records;
}

このコードでは、UrlFetchApp.fetch()メソッドを使用して、Salesforce APIにリクエストを送信しています。soqlQuery変数には、Salesforce Object Query Language(SOQL)で記述されたクエリが格納されています。このクエリによって、指定された四半期の商談データを取得できます。encodeURIComponent()関数は、SOQLクエリをURLエンコードするために使用されます。

実用的なコード例:Google Analytics APIとの連携

次に、Google Analytics APIと連携して、四半期ごとのWebサイトトラフィックデータを取得する例を紹介します。Google Analytics APIを利用するためには、事前にGoogle Cloud Platformでプロジェクトを作成し、APIを有効化する必要があります。また、GASプロジェクトにGoogle Analytics APIのOAuthスコープを追加する必要があります。

// Google Analytics APIの設定
const GOOGLE_ANALYTICS_VIEW_ID = "YOUR_GOOGLE_ANALYTICS_VIEW_ID";

function getGoogleAnalyticsData(startDate, endDate) {
const metrics = "ga:sessions,ga:users,ga:pageviews";
const dimensions = "ga:date";

const options = {
"method": "get",
"muteHttpExceptions": true
};

const url = `https://www.googleapis.com/analytics/v3/data/ga?ids=ga:${GOOGLE_ANALYTICS_VIEW_ID}&start-date=${startDate}&end-date=${endDate}&metrics=${metrics}&dimensions=${dimensions}`;

// APIリクエスト送信
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());

// エラーハンドリング
if (response.getResponseCode() !== 200) {
Logger.log("Google Analytics API Error: " + response.getContentText());
return null;
}

// データを返す
return json.rows;
}

このコードでは、UrlFetchApp.fetch()メソッドを使用して、Google Analytics APIにリクエストを送信しています。startDateendDate変数には、取得したいデータの期間を指定します。metrics変数には、取得したい指標(セッション数、ユーザー数、ページビュー数)を指定します。dimensions変数には、データのディメンション(日付)を指定します。

四半期レポートの自動生成

上記のAPI連携によって取得したデータをGASで集計し、四半期レポートを自動生成する例を紹介します。ここでは、Googleドキュメントにレポートを出力する例を示します。

function generateQuarterlyReport(quarter) {
// データの取得
const salesforceData = getSalesforceOpportunityData(quarter);
const startDate = Utilities.formatDate(new Date(new Date().getFullYear(), (quarter - 1) * 3, 1), "JST", "yyyy-MM-dd");
const endDate = Utilities.formatDate(new Date(new Date().getFullYear(), quarter * 3, 0), "JST", "yyyy-MM-dd");
const googleAnalyticsData = getGoogleAnalyticsData(startDate, endDate);

// ドキュメントの作成
const doc = DocumentApp.create("四半期レポート(" + quarter + "四半期)");
const body = doc.getBody();

// タイトルの追加
body.appendHeading(DocumentApp.ParagraphHeading.HEADING1, "四半期レポート(" + quarter + "四半期)");

// Salesforceデータの追加
body.appendParagraph("■ Salesforce 商談データ");
if (salesforceData) {
salesforceData.forEach(record => {
body.appendParagraph(`商談名:${record.Name} 金額:${record.Amount} 完了日:${record.CloseDate}`);
});
} else {
body.appendParagraph("データ取得に失敗しました。");
}

// Google Analyticsデータの追加
body.appendParagraph("\n■ Google Analytics データ");
if (googleAnalyticsData) {
googleAnalyticsData.forEach(row => {
body.appendParagraph(`日付:${row[0]} セッション数:${row[1]} ユーザー数:${row[2]} ページビュー数:${row[3]}`);
});
} else {
body.appendParagraph("データ取得に失敗しました。");
}

// ドキュメントを保存
doc.saveAndClose();

Logger.log("レポートが作成されました:" + doc.getUrl());
}

このコードでは、DocumentAppオブジェクトを使用して、Googleドキュメントを作成し、データを追加しています。appendHeading()メソッドは、見出しを追加するために使用されます。appendParagraph()メソッドは、段落を追加するために使用されます。最後に、doc.saveAndClose()メソッドを使用して、ドキュメントを保存します。

応用例と活用シーン

  • 複数のAPIを連携させて、より詳細なレポートを作成する
  • レポートをPDF形式で自動的にメール送信する
  • スプレッドシートでデータ分析を行い、グラフを作成してレポートに含める
  • レポート作成のワークフローを自動化する

まとめ

本記事では、GASとAPI連携を使用して、四半期レポートの自動作成を実現する方法を解説しました。API連携によって、様々なシステムから必要なデータを自動的に収集し、レポート作成を大幅に効率化することができます。ぜひ、本記事を参考に、GASとAPI連携を活用して、業務効率化を実現してください。