PHPからスプレッドシートに書き込む

PHPからPOSTした内容をGoogle Apps Scriptで受け取って、スプレッドシートに書き込む処理を実装してみます。

スプレッドシートの設定

まずはスプレッドシートの設定を行います。
新規でスプレッドシートを作成して、書き込みを行う列に見出しを追加します。

今回は名前と年齢をPOSTするので、A列に名前、B列に年齢を追加しました。
2行目以降にPOSTした内容が書き込まれていきます。

上部メニューから ツール > スクリプトエディタ を選択します。

デフォルトで入っているmyFunction()を以下のように変更します。

function doPost(e) {
  // POSTした内容を取得
  var name = e.parameter.name;
  var age = e.parameter.age;

  // スプレッドシートへの書き込み
  var spread = SpreadsheetApp.getActiveSpreadsheet();
  var lastRow = spread.getSheets()[0].getLastRow();
  spread.getSheets()[0].getRange((lastRow + 1), 1).setValue(name);
  spread.getSheets()[0].getRange((lastRow + 1), 2).setValue(age);

  // returnの設定
  var jsonData = {
    name: name,
    age: age,
    result: 'ok'
  }
  return ContentService.createTextOutput(JSON.stringify(jsonData))
    .setMimeType(ContentService.MimeType.JSON);
}

右上の デプロイ > 新しいデプロイ を選択します。

歯車マーク > ウェブアプリ を選択します。

アクセスできるユーザーを全員にしてデプロイを行います。

デプロイ完了後、ウェブアプリのURLをコピーしておきます。

PHPの実装

最後にPHPでフォームの実装を行います。

<?php
if(count($_POST)){
	$url = 'ウェブアプリのURLをここに入れる';
	$data = array(
		'name' => $_POST['name'],
		'age' => $_POST['age'],
	);
	$context = array(
		'http' => array(
			'method'  => 'POST',
			'header'  => implode("\r\n", array('Content-Type: application/x-www-form-urlencoded',)),
			'content' => http_build_query($data)
		)
	);
	$response_json = file_get_contents($url, false, stream_context_create($context));
	$response_data = json_decode($response_json);
	var_dump($response_data);
}
?>
<form action="./" method="post">
	<input type="text" name="name" placeholder="名前">
	<input type="text" name="age" placeholder="年齢">
	<button type="submit">送信</button>
</form>

フォーム送信を行った際に、先ほどのウェブアプリのURLへPOSTを行い、返ってきた値をvar_dump()で出力しています。
投稿を試してみると、var_dump()で以下のように出力されるのが確認できました。

object(stdClass)#1 (3) { ["name"]=> string(9) "かなた" ["age"]=> string(2) "18" ["result"]=> string(2) "ok" }

スプレッドシートにも以下のように入力内容で書き込まれていることが確認できました。

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930