GASでWebアプリ開発!SpreadsheetApp.openByIdでスプレッドシート連携ダッシュボード構築
本記事では、Google Apps Script(GAS)のSpreadsheetApp.openById
関数を活用し、Webアプリケーションからスプレッドシートにアクセスして連携ダッシュボードを構築する方法を解説します。Webアプリ開発におけるフォーム作成、API連携、そしてスプレッドシートをデータソースとしたダッシュボード作成といった利用シチュエーションに特化し、具体的なコード例とトラブルシューティング、カスタマイズ方法を紹介します。特に、スプレッドシートのデータを効率的にWebアプリに表示し、ビジネスの課題解決に役立つダッシュボード作成に焦点を当てます。
SpreadsheetApp.openById関数の基本
SpreadsheetApp.openById(id)
は、指定されたIDを持つスプレッドシートを開くためのGASの関数です。この関数を使用することで、Webアプリから特定のスプレッドシートにアクセスし、データの読み書きを行うことができます。IDはスプレッドシートのURLに含まれています。
構文:
SpreadsheetApp.openById(id)
id
:開きたいスプレッドシートのID(文字列)
Webアプリ開発におけるSpreadsheetApp.openByIdの活用
Webアプリ開発において、SpreadsheetApp.openById
は、スプレッドシートをデータソースとして利用する場合に非常に役立ちます。例えば、フォームから入力されたデータをスプレッドシートに保存したり、APIから取得したデータをスプレッドシートに書き込んだり、スプレッドシートのデータをWebアプリ上にダッシュボードとして表示したりすることができます。
実装例1:フォームデータのスプレッドシートへの保存
Webアプリのフォームから送信されたデータをスプレッドシートに保存する例です。
function doPost(e) {
// スプレッドシートIDを設定
const ssId = "YOUR_SPREADSHEET_ID";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(ssId);
// シートを取得
const sheet = ss.getSheetByName("シート1");
// フォームデータを取得
const formData = e.parameter;
// データをシートに書き込む
sheet.appendRow([formData.name, formData.email, formData.message]);
// レスポンスを返す
return ContentService.createTextOutput("送信完了");
}
解説:
YOUR_SPREADSHEET_ID
は、実際のスプレッドシートIDに置き換えてください。doPost(e)
関数は、POSTリクエストを受け取るための関数です。e.parameter
には、フォームから送信されたデータが含まれています。appendRow()
メソッドは、シートの最終行にデータを追加します。
実装例2:APIデータのスプレッドシートへの書き込み
APIから取得したデータをスプレッドシートに書き込む例です。
function writeApiDataToSpreadsheet() {
// スプレッドシートIDを設定
const ssId = "YOUR_SPREADSHEET_ID";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(ssId);
// シートを取得
const sheet = ss.getSheetByName("シート1");
// APIからデータを取得(ここではJSONPlaceholderの例)
const response = UrlFetchApp.fetch("https://jsonplaceholder.typicode.com/todos/1");
const data = JSON.parse(response.getContentText());
// データをシートに書き込む
sheet.appendRow([data.userId, data.id, data.title, data.completed]);
}
解説:
YOUR_SPREADSHEET_ID
は、実際のスプレッドシートIDに置き換えてください。UrlFetchApp.fetch()
でAPIからデータを取得します。JSON.parse()
でJSONデータを解析します。- 取得したデータを
appendRow()
でシートに書き込みます。
実装例3:スプレッドシートのデータをWebアプリに表示(ダッシュボード)
スプレッドシートのデータを読み込み、Webアプリ上にダッシュボードとして表示する例です。この例では、HTML Serviceを使用して簡単なWebページを作成し、スプレッドシートのデータを表示します。
function doGet(e) {
// スプレッドシートIDを設定
const ssId = "YOUR_SPREADSHEET_ID";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(ssId);
// シートを取得
const sheet = ss.getSheetByName("シート1");
// データを取得
const data = sheet.getDataRange().getValues();
// HTMLテンプレートにデータを渡す
const template = HtmlService.createTemplateFromFile("index");
template.data = data;
// HTMLを出力
return template.evaluate().setTitle("スプレッドシート連携ダッシュボード");
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
index.html:
table {
border-collapse: collapse;
}
th, td {
border: 1px solid black;
padding: 8px;
}スプレッドシートデータ
= header[i] ?> |
---|
= data[i][j] ?> |