スキルアップを始める!

【GAS】スプレッドシートをJSON形式で出力して読み込むAPIを作る(Part1)

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約4分で読めます。

※記事中に広告情報を含みます。

スキルを手に入れた時、人は強くなれる。
Youtubeでスキルアップを始める 電子書籍でスキルアップを始める
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

GoogleスプレッドシートをJSON形式で出力し、それを読み込むAPIを作成してみます。以下の例では、doGet 関数を使用してJSON形式でデータを出力し、doPost 関数を使用してデータを書き込むようなAPIを作成しています。

Google Apps Script の新しいプロジェクトを作成

Google Apps Script の新しいプロジェクトを作成して、スクリプトエディタで以下のコードを貼り付けます。

function doGet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("YourSheetName");
  const data = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues();

  const object = [];
  const headers = data[0];

  for (let i = 1; i < data.length; i++) {
    object[i - 1] = {};
    for (let j = 0; j < headers.length; j++) {
      object[i - 1][headers[j]] = data[i][j];
    }
  }

  const json = JSON.stringify(object);

  const output = ContentService.createTextOutput();
  output.setMimeType(ContentService.MimeType.JSON).setContent(json);
  Logger.log(json);
  return output;
}

情報	[{"total":129}]

スクリプトの概要

[rml_read_more]

  1. getActiveSpreadsheet()を使ってアクティブなスプレッドシートを取得。
  2. getSheetByName("YourSheetName")を使って特定のシートを取得。YourSheetName は実際のシート名に置き換える必要があります。
  3. getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())を使ってシートの全範囲のデータを取得。
  4. データを処理するためのオブジェクト(object)を初期化。
  5. ヘッダー行を取得し、各行のデータをオブジェクトに変換。このとき、各セルのデータはヘッダーをキーとしたオブジェクトに格納されます。
  6. JSON.stringify(object)を使ってオブジェクトをJSON形式の文字列に変換。
  7. ContentService.createTextOutput()で出力用のTextOutputを作成し、JSONデータをセット。
  8. Logger.log(json)でJSONデータをログに出力。
  9. JSONデータを含むTextOutputを返しています。

これにより、スクリプトをデプロイしたWebアプリケーションのURLにアクセスすることで、スプレッドシートのデータがJSON形式で取得できるようになります。

ウェブアプリとして導入

スクリプトエディタで「公開」メニューから「ウェブアプリ」を選択し、デプロイします。

デプロイが完了したら、ウェブアプリケーションのURLが表示されます。

ウェブアプリケーションのURLを使ってGETやPOSTリクエストを行い、データを取得または書き込むことができます。

まとめ

ウェブブラウザでウェブアプリケーションのURLにアクセスするとJSONデータが表示されます。また、POSTリクエストを行うことでデータをスプレッドシートに書き込むことができます。

URLをコピーしました!