はじめに
目次
GoogleFormでスプレッドシートを作成したこれをphpでjsonとして呼び出し、連想配列に格納しようとする過程で試行錯誤したので、ここに記します。
スプレッドシートの値をphpで取得する方法
スプレッドシートをphpで呼び出すためには、2種類の方法があります。一つはSpreadSheetAPIを使う方法、もう一つはスプレッドシートから直接扱う方法です。今回私が作成するものはphpによる書き込みを行う必要がなかったため、後者のものを利用しました。
まずスプレッドシートを共有し、公開設定を行います。これにより他の人がアクセスできる様になる。公開設定は、編集タブから開くことが出来ます。
スプレッドシートを、jsonで取得するには以下のURLから取得できます。作成したスプレッドシートのIDを該当箇所に入れるだけです。
https://spreadsheets.google.com/feeds/list/GoogleスプレッドシートのIDを入力/od6/public/values?alt=json
スプレッドシートのIDは、URLの次の部分です。
https://docs.google.com/spreadsheets/d/GoogleスプレッドシートのID/edit#gid=0
この二つを利用することで、Googleスプレッドシートの中身を読み取ることが出来ます。しかしこれでは、上手く行かない場合があります。私の場合は、GoogleFormによって作成したGoogleスプレッドシートのAPIを入力する際に、同じようにIDを入れるだけではjsonで取得出来ませんでした。その際下記のAPIを入力・ブラウザで検索することで、解消することが出来ます。ここで吐き出されるjsonデータは、Googleスプレッドシートの構成などが書かれているものです。
https://spreadsheets.google.com/feeds/worksheets/{スプレッドシートのID}/public/values?alt=json
このAPIを叩くと次のような結果が得られます。
上の写真では、わからないと思います。書出しとしては、
{"version":"1.0","encoding":"UTF-8","feed": ...
となっています。これはGoogleスプレッドシートの情報が、書かれているものです。今回の目的であるjsonデータを取得した場合は、
{"rel":"http://schemas.google.com/spreadsheets/2006#cellsfeed","type":"application/atom+xml","href":"https://spreadsheets.google.com/feeds/cells/{GoogleスプレッドシートのID}/{ページを指定するもの。}/public/values"},
となっている行の、GoogleスプレッドシートIDと、ページを指定する部分を抜き出し、jsonを吐き出すAPIに入れることによって、jsonデータが得られます。
以上で、GoogleFormで作成したスプレッドシートからjsonデータを取得する方法についての解説を終わりにします。
最後に
GoogleSpreadSheetAPIを使うより設定することが、手軽にできると思います。ただしデータの書き込みを行いたい方は、GoogleSpreadSheetAPIを使う、もしくは手軽なものであれば今回の様にフォームを使う必要があるでしょう。
コメント