GASを使って外部からデータを呼び出すAPIを作る際の注意点と記述方法
以下に注意する
- スプレッドシートIDでシートを読み込む
- 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;