PHP プログラミング

PHPでGoogle SpreadsheetのCSVをURLから読み込む

2016/07/13

20140403-1-300x178

タイトルの通りGoogle SpreadsheetのCSV読み込みについて解説しとこうと思います。
結構な速度でちょこちょこと仕様が変わってるんで2013年前半辺りの情報だと既にやり方が違う可能性が高いです。

以前のように
メニューの「ファイル」→「ウェブの公開」でCSVを選択→出力されたURLを使ってCSV読み込み
は出来なくなってます。またCSV出力のURL自体が変わっちゃってます。

2014年4月現在のGoogle SpreadsheetのCSV出力URLは
https://docs.google.com/spreadsheets/d/{スプレッドシートのID}/export?format=csv&id={スプレッドシートのID}&gid=0
こんな感じになってます。( {スプレッドシートのID}には任意のIDを入力 )

CSV出力URLをちゃんと確認したいなら
メニューの「ファイル」→「形式を指定してダウンロード」からCSVをダウンロードして
ブラウザのダウンロード履歴にあるURLを見ればよいと思います。

20140429-1

Chromeの場合はこんな感じで表示されるはずです。

とりあえず上記でGoogle SpreadsheetのCSVへのURLは分かると思うので
本題に戻ってPHPでそのWEB上のCSVファイルを読み込みましょう。
以下にサンプル処理を載せておきます。

 

setlocale、mb_convert_encoding、tmpfile、fwrite、rewind辺りのコードはお約束の文になりそう。
その辺りの記述がないと多分配列を取得できないと思う。
色々なサイトを流し読みした結果なので、意味は良く分かってない。深く知りたい人はググったほうが良い。

あと「str_getCsv」を使った方が処理が楽になりそうに思えますが
改行の部分で配列取得がうまく動かなかったため、最終的に「fgetcsv」に落ち着きました。
「fgetcsv」は1行ずつ配列を取得するので改行なんかは無問題です。

上記のコードはGoogle Spreadsheetに限らず、WEB上に公開されてるCSVファイル、またローカルCSVファイルでも
読み込めると思うので色々な場面で使えると思います。

・参考にしたサイト
PHPでCSVファイルを読み込む « Codaholic
fgetcsv関数を文字化け対応 setlocaleの文字コード指定 – [PHP + PHP] ぺんたん info
【php】CSV形式の文字列からデータを取得したい at softelメモ
Excel用のCSV(SJIS)をPHP(UTF-8)で読み込む – 130単位

・・・などなど

以上こんな感じ~

スポンサーリンク

-PHP, プログラミング
-, , , ,