1. TOPページに戻る
  2. PHP
  3. [Google Apps Script]Google Apps Scriptを使ってスプレッドシートから外部ファイルにデータをpostする

[Google Apps Script]Google Apps Scriptを使ってスプレッドシートから外部ファイルにデータをpostする

  • 2020年07月16日

Google Apps Scriptを使って情報を(今回の想定はスプレッドシートから)外部に送信できないかなと思い調べたら、UrlFetchApp.fetchというのがあったのでその実装コードです。

内容としては、Google Apps Scriptでjsonデータを外部にpostし、受け取ったPHP側でそのjsonデータをjsonファイルで出力します。

Google Apps Scripts側

スプレッドシートのデータをjson形式にする等該当部分以外のコードは省略しています。

function sendPostRequest() {
  var headers = {
    "Content-Type": "application/json"
  };
  
  var json = { //json形式のデータをここに入れる
      "id": "json",
      "data": {
		"name": "name",
		"id": 1
	}
  }
  
  var options = {
    "headers": headers,
    "method": "post",
    "payload": JSON.stringify({ json })
  };

  var response = UrlFetchApp.fetch("http://xxxxx.jp/xxxx.php", options);//post先のphpファイル
}

これでjsonデータをPHP側で受けることができます。

受け取るPHP側

受け取る側のPHPのコード。
jsonデータを受け取ったら、data.jsonとしてデータを記入したjsonファイルを書き出します。

$json = file_get_contents("php://input");
$contents = json_decode($json, true);

file_put_contents( "data.json", json_encode($contents)); //data.jsonとして同じ階層に書き出し

元々はスプレッドシートのデータをjsonファイルにしてGoogleドライブに保存、それを読み込んで使用していたのですが少し前から403エラーが頻発。短時間で復活するのですが原因不明で調べたところアクセス回数が多いからのようでした。APIリクエスト数が多かったのかな?

アクセス数が多いくはないサイトで起きていたので、外部にデータを移せないかなと思ってしらべたのがこちらのUrlFetchApp.fetchになります。これを使えばサイトの一部分をスプレッドシートから更新するとかもできそうです。