webサイトからスプレッドシートに書き込む方法を考えます。今回はC#とは関係がありません。Google Sheets APIとPHPを使います。

まずはGoogle Cloud Platform で Projectを作成しましょう。そしてGoogle Sheet APIの有効化したらサービスアカウントを作成します。作成すると認証情報を含んだJSONファイルがダウンロードされるので保存します。

データを書き込みたいスプレッドシートを作成してアカウントユーザーと共有します。共有すべきアカウントユーザーはJSONファイルのなかに書かれています。”client_email”:と書かれている部分です。

次にgoogleapis/google-api-php-clientを使うために必要なPHPを取得するのですが、ここではcomposerを使います。composerをインストールします。そしてコマンドプロンプトで適当なフォルダに移動して

と入力します。するとgoogleapis/google-api-php-clientを使うために必要なPHPファイルがダウンロードされます。フォルダのなかをみてみるとけっこうな数になっています。

このフォルダのなかにvendorというフォルダが生成されていますが、このフォルダがあるフォルダのなかにindex.phpというファイルをつくります。それからこのフォルダのなかにサービスアカウントを作成したときにダウンロードした認証情報を含んだJSONファイルもコピーします。

index.phpに以下を書きます。これはスプレッドシートに書き込むためのコードです。作成したスプレッドシートのIDはスプレッドシートのurlのXXXXXXXの部分です。

index.php

あとはこれをサーバーにアップロードします。ただ実際にアップロードするまえにローカル環境でテストをしておきましょう。

簡易クリック解析?

つぎにリンクをクリックするとリダイレクトされ、それが時刻とリダイレクトの結果がスプレッドシートに記録されるというアプリをつくってみます。簡単なクリック解析ができます。

https://lets-csharp.com/sample/redirect/?to=yahoo
https://lets-csharp.com/sample/redirect/?to=youtube

これをクリックするとヤフー・ジャパンやYou Tubeのトップページに飛びます。

そしてここに記録されます。リンクをクリックして確認してみてください。

https://lets-csharp.com/sample/redirect/?to=yahoo
https://lets-csharp.com/sample/redirect/?to=youtube

上のように引数が正しい場合はリダイレクトされます。

https://lets-csharp.com/sample/redirect/?to=abc(abcは登録されていない)やhttps://lets-csharp.com/sample/redirect/?abc=abc(必要な引数「to」が存在しない)にアクセスするとリダイレクトできないと表示され、スプレッドシートには失敗した理由が記録されます。