Tweet

2018年11月22日木曜日

Googleスプレッドシートの内容をJson形式で返すAPIの作り方

今回実行できたこと

Googleスプレッドシートに記入してあるセルのデータをjson形式で返す。

やりかったこと

Googleスプレッドシートで食べ物ごとの成分表を更新して、
iPhoneアプリ側で通信して取得してテーブルに表示したかった。


今回はURLを叩けばJSON形式でGoogleスプレッドシートの内容が返ってくる所まで
ご紹介しようと思います。


当投稿をコピー&ペーストすれば同じようなことが出来るようになると思います。

Googleスプレッドシートを使ってデータベースを使うメリット

  • 非エンジニアでもデータの更新が可能。
    • 誰でも簡単にExcelを操作するようにデータ更新する事が出来ます。
  • 自作のサーバーやレンタルをせずにAPIを用意できる。
  • 導入が簡単。

用語説明

  • Googleスプレッドシート
    • Googleが提供する無料のクラウド版Excel。
    • 同期や同時編集、履歴やオンラインバックアップなど便利な機能が豊富。
    • 非エンジニアでもデータの編集が可能。
  • JSON形式
    • 詳しくは調べてみてください。データ通信の便利な型という認識でOKです。
    • 一般的な型です。

必要なもの

  • Googleアカウント(無料)
    • GoogleスプレッドシートをはじめとするGoogleAppは、アカウントが必要となります。
    • 今お使いのG-mailなどで使っているアカウントで問題ございません。

手順1:Googleドライブ内にGoogleスプレッドシートを作成する。


上記URLにアクセスして
「マイドライブ」内に「Googleスプレッドシート」を新規作成してください。


こんな感じに作成してみてください、多分難しくはないと思います。
上記画像の緑色のアイコンがGoogleスプレッドシートファイルになります。
名前などは好きに決めてしまってください。

手順2:Googleスプレッドシートのスクリプトエディタを編集する。



上記画像を参考に、
スクリプトエディタを開いてみてください。

手順3:コーディングする



function getData(id, sheetName) {
  var sheet = SpreadsheetApp.openById(id).getSheetByName(sheetName);
  var rows = sheet.getDataRange().getValues();
  var keys = rows.splice(0, 1)[0];
  return rows.map(function(row) {
    var obj = {}
    row.map(function(item, index) {
      obj[keys[index]] = item;
    });
    return obj;
  });
}

function doGet() {
  var data = getData('1c9qR44ui65K1fp-fQOjAB37s3vCV0K3vw1VNayqvNXc', 'Sheet1');
  return ContentService.createTextOutput(JSON.stringify(data, null, 2))
  .setMimeType(ContentService.MimeType.JSON);
}


上記コードをコピペしてみてください。
恐らく問題ないはず。

上記コードをペースト後、
上記画像のオレンジ色で囲った保存ボタンを押してください。
データの保存には1分程度時間がかかります。
確実に保存しましょう、反映されていないでハマるはよくあります。


手順4:ウェブアプリケーションとして導入



上記設定通りで問題ございません。
スクリーンショットの通り、設定してみましょう。

上記画像の「最新のコード」をクリックすると、
URLが取得できます(勝手にジャンプします)

注意:許可について(必須)

初回に「最新のコード」をクリックしてページ遷移すると、
下記画像のような警告が出ると思います。

ここハマりやすいので注意。
左下の「詳細」から「無題のプロジェクト(安全ではないページ)に移動」



これは、「許可」でOKです。

手順5:おしまい

「最新コード」のURLを検索すると、下記のようにJSON形式で返ってきます。

説明は以上となります。

追記

当記事を読みながら、
念の為もう1度Googleスプレッドシートを作ってみましたが、
問題なく実行できました。

なにかご質問があればコメントまでお寄せください。



0 件のコメント:

コメントを投稿