前提・実現したいこと
PHPとGAS(google form & Spread sheet)で自動処理を作ってます。
内容は、以下になります。
- Google form で問合せ
- ”送信ボタン押下”をトリガーとし、Spread sheetに追加された値(問合せ内容)を取得し、POST送信
- Xserver の match.php でPOSTを受信し、DBと照合
- If yes(照合がture)、そのデータを他のGoogle spread sheetにPOST送信
- if not(照合がfalse)、そのデータを2. のSpread sheetにPOST送信
上記の5.(4.は作業前)のPHPから指定のGoogle spread sheetへPOST送信をすると"400 Bad Request"になります。
発生している問題・エラーメッセージ
The requested URL returned error: 400 Bad Request
該当のソースコード
//送信データ整形 $ss_row_num = (string)$data['row_num']; //照合失敗 スプシのそのユーザーの行塗り潰し //POST送信先のスプシURL $ss_url = "https://script.google.com/macros/s/○○○○○○○○○○/exec"; $post_row_num = "{\"rowNum\": \"$ss_row_num\"}"; $json_row = json_decode($post_row_num, true); //GASへスプシの行番号をPOST送信 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $ss_url); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_row); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json charset=\"utf-8\"', 'Accept: application/json')); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true ); curl_exec($ch); //エラー処理 if (curl_errno($ch)) { print "03Error: " . curl_error($ch); } else { curl_close($ch); }
試したこと
Talend API Tester(Google Chromeの拡張機能)を使ってテストPOST送信したところ、GAS側でのPOST受信で
以下のエラーが起きてます。
"スクリプトが完了しましたが、何も返されませんでした。"
また、doPOSTのGAS側のコードは、こちらです。
function doPost(e) { //POST値パース if (typeof e === "undefined"){ //動作を終了する return; } else{ var requestJSON = JSON.parse(e.postData.getDataAsString()); var rowNum = requestJSON.rowNum; //対象のシートを取得 var sheet = SpreadsheetApp.openById("hogehoge").getSheetByName('フォームの回答 1'); sheet.getRange(rowNum, 1, 1, 5).setBackground("gray"); return HtmlService.createHtmlOutput(rowNum); }
補足情報(FW/ツールのバージョンなど)
PHP version: 7.4.4
###この後、すること、やっていること
原因の切り分け
Macのターミナルからcurlを叩いてもエラーは、同様ですが、
GAS側の処理(色付け)は、成功してます。
GAS側に返り値を設定出来れば、エラーを解決できるかと予想し、作業中です。
なにか、他の方法等、お知恵をお貸しいただけますと、幸いです。
何卒、宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。