GASを使って外部からデータを呼び出すAPIを作る際の注意点と記述方法

以下に注意する

  1. スプレッドシートIDでシートを読み込む
  2. Mine Typeの設定をする

1. スプレッドシートIDでシートを読み込む

「拡張機能」→「Apps Script」でスクリプトを作成した場合、スプレッドシートとエディタが紐付いているので

const app = SpreadsheetApp.getActive()

でシートが読み込むことができ、例えばスプレッドシートにボタンを配置して、スクリプトの関数を読んだりする場合は問題なくシート情報を取得できる。
ただ外部からAPIとして呼び出す場合はこれが使えず、ユニークなスプレッドシートIDを用いて取得してくる必要があるため注意。

// <SPREAD_SHEET_ID>はスプレッドシートURLの`spreadsheets/`以下の文字列
const app = SpreadsheetApp.openById(SPREAD_SHEET_ID);

2. Mine Typeの設定をする

これは当然といえば当然なのだけど、例えばJSON.stringifyしたシートデータ文字列をただreturnしても呼び出し時にタイプエラーとなってしまう。
Typeを設定したデータを返却するようにする。

const result = ContentService.createTextOutput();
// JSONを返却する場合
result.setMimeType(ContentService.MimeType.JSON);
result.setContent(JSON.stringify(data));
return result;