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" }
スプレッドシートにも以下のように入力内容で書き込まれていることが確認できました。
コメントが承認されるまで時間がかかります。