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] ?> |