GoogleスプレッドシートをExcelファイルでダウンロードします。またアップロードしたExcelファイルでGoogleスプレッドシートに書き込みます。

動作確認はこちらから

今回はExcelファイルのデータをGoogleスプレッドシートに書き込んでみます。

前回同様にGoogle Cloud PlatformにおけるProjectの作成、Google Sheet APIの有効化、サービスアカウントの作成と認証情報を含んだJSONファイルのダウンロードをしておく必要があります。前回のダウンロードしたJSONファイルをそのまま使ってもかまいません。

最初にGoogleスプレッドシートのデータをExcelファイルとしてダウンロードする処理をやってみましょう。

excelファイルをphpで扱うにはphpspreadsheetが必要です。composerがインストールされているのであればコマンドラインから

これでインストール完了です。ファイル数は900個くらい。サイズは6MBくらいです。これを前回使用したGoogle Api Clientのフォルダといっしょにサーバーにアップロードしておきます。ワードプレスがインストールされているディレクトリのなかにsampleというディレクトリを作成し、そのなかへアップロードしました。

sampleディレクトリのなかにspreadsheet-excelというディレクトリをつくり、そのなかに以下のようなファイルを作成します。

これはスプレッドシートのA1:E5の範囲を取得し、excelファイルとしてダウンロードするためのコードです。

download.php

アップロードしたphpファイルにアクセスするとスプレッドシートの内容がexcelファイルとしてダウンロードされます。注意する点としてecho文でどのようなデータが取得できるか表示させてみたいのですが、これをするとダウンロードされるファイルに変更が加えられ、開こうとしてもうまくいかなくなることです。余計なものは出力してはいけません。

つぎにexcelファイルをアップロードして、このデータをスプレッドシートに追加する方法を考えます。

まずはindex.htmlを作成します。Downloadリンクをクリックすると上記のダウンロードの処理が実行されます。アップロードするとup.phpにかかれている処理が実行されます。

index.html

アップロードするとup.phpにかかれている処理が実行されるのですが、どのような処理が実行されるのでしょうか?

ファイルをアップロードすると自作のgetValueArray関数によってファイルのデータが配列として取得され、setDataToSpreadsheet自作関数によって配列がスプレッドシートに書き込まれます。

up.php

ファイルのデータが配列として取得するgetValueArray関数を示します。

取得したデータがnullのとき書き込み処理でエラーになるので空白文字をいれています。

up.php

次にsetDataToSpreadsheet関数を示します。

up.php