質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Q&A

解決済

1回答

2812閲覧

GASにcurlからjson形式でPOSTできない。

tohtsukipxn

総合スコア17

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

0グッド

1クリップ

投稿2019/05/06 06:46

編集2019/05/06 08:42

GASにcurlからjson形式でPOSTしたい。

GASにcurlからjson形式でPOSTしようとしています。
エラー発生しているポイントはJSON.parse()で、与えた文字列が不正としてエラーとなってしますます。

不正な文字列は**.postData.getDataAsString();**で生成していて、内容は""がなくなってしまうところまで分かりました。

発生している問題・エラーメッセージ

エラーメッセージ c:\>curl -XPOST https://script.google.com/macros/s/AKfycbzntxDdti4eyHkSSLFGg6X6VfG9eSt7wgWwTK7kZldVp5SJebT7/exec -H "Accept: application/json" -H "Content-type: application/json" -d '{"value":"lisz-works"}' <!DOCTYPE html><html><head><link rel="shortcut icon" href="//ssl.gstatic.com/docs/script/images/favicon.ico"><title>エラー</title><style type="text/css">body {background-color: #fff; margin: 0; padding: 0;}.errorMessage {font-family: Arial,sans-serif; font-size: 12pt; font-weight: bold; line-height: 150%; padding-top: 25px;}</style></head><body style="margin:20px"><div><img alt="Google Apps Script" src="//ssl.gstatic.com/docs/script/images/logo.png"></div><div style="text-align:center;font-family:monospace;margin:50px auto 0;max-width:600px">SyntaxError: Unexpected token: &#39;(行 4、ファイル「コード」、プロジェクト「postのテスト」)</div></body></html>

Google Apps Script(該当のソースコード)

function doPost(e){ FileLogger.logging(function(){ // logファイル出力callback var jsonString = e.postData.getDataAsString();//← ""がない文字列となってしまう。 var params = JSON.parse(jsonString);//←書式異常でエラーとなる。 var value = params.value; Logger.log(jsonString); Logger.log(value); }); }

curl コマンドライン文字列

①curl -XPOST https://script.google.com/macros/s/<ID>/exec -H "Accept: application/json" -H "Content-type: application/json" -d '{\"value\":\"lisz-works\"}' ②curl -XPOST https://script.google.com/macros/s/<ID>/exec -H "Accept: application/json" -H "Content-type: application/json" -d '{"value":"lisz-works"}' ③curl -XPOST https://script.google.com/macros/s/<ID>/exec -H "Accept: application/json" -H "Content-type: application/json" -d '{'"value"':'"lisz-works"'}' ④curl -XPOST https://script.google.com/macros/s/<ID>/exec -H "Accept: application/json" -H "Content-type: application/json" -d '{''value'':''lisz-works''}' ⑤curl -XPOST https://script.google.com/macros/s/<ID>/exec -H "Accept: application/json" -H "Content-type: application/json" -d '{'value':'lisz-works'}'

試したこと

上記①~⑤logで確認したところ、①は期待した文字列が得られましたが、同じエラーで止まってしまいます。

補足情報(FW/ツールのバージョンなど)

c:>curl -V
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

追伸

非常に基本的なことであるせいか、かなり調べたのですが解決に至りませんでした。
初心者なため、PCを変えたり、再起動したりと色々試してみたのですが、問合せさせて頂きました。
知恵をお貸しいただけないでしょうか。宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aikon_marimo

2019/05/06 07:26

>エラー発生しているポイントはJSON.parse()で、与えた文字列が不正としてエラー 発生したエラーメッセージはどれでしょうか?
tohtsukipxn

2019/05/06 07:44

問合せして頂きありがとうございます。感謝します。 上記エラーメッセージの「SyntaxError: Unexpected token: &#39;(行 12、ファイ ル「コード」、プロジェクト「postのテスト」)」部分がエラーの内容と思います。 引数に与えた'{"value":"lisz-works"}'がこのまま到達すればよいのですが、'{value:lisz-works}'となり、""が消えてしまうことでエラーになっています。
aikon_marimo

2019/05/06 08:27

スクリプトは質問欄にあるのが全量でしょうか? >yntaxError: Unexpected token: &#39;(行 12、ファイ ル「コード」、プロジェクト「postのテスト」) こちらのエラーメッセージだと12行目のシングルクォートがエラーになっているように見えますが。
tohtsukipxn

2019/05/06 08:45

原文ソースはコメントが多く、アップするときに削除していました。混乱するので、アップしたソースであたらめてエラー出力を得てアップしました。4行目の var params = JSON.parse(jsonString);//←書式異常でエラーとなる。 でエラーとなりますが、原因はjsonStringにあります。 似たブログはあるのですが、複数やってどうしてもうまくいっていません。私固有の環境なのかも知れませんがぜひとも解決したいと思っています。
aikon_marimo

2019/05/06 09:12 編集

以下にするとどうなりますか?(※URLはご自身のに変更願います) curl -XPOST https://script.google.com/macros/s/<ID>/exec -H "Accept: application/json" -H "Content-type: application/json" -d "{\"value\":\"lisz-works\"}"
tohtsukipxn

2019/05/06 09:21

早速やってみました!! 感動しました。 ①"{\"value\":\"lisz-works\"}"・・・OK ②'{\"value\":\"lisz-works\"}'・・・NG ③'{"value\":"lisz-works"}'・・・NG 多くのブログでは③でした。これは何か理由があるのでしょうか。win10のcurlはNGでUNIX系はOKなのでしょうか。 とにかくかなりはまっていたので本当に助かりました。ありがとうございます!! すごいですね。
guest

回答1

0

ベストアンサー

以下にするとどうなりますか?(※URLはご自身のに変更願います)

curl -XPOST https://script.google.com/macros/s/&lt;ID&gt;/exec -H "Accept: application/json" -H "Content-type: application/json" -d "{\"value\":\"lisz-works\"}"

投稿2019/05/06 09:33

aikon_marimo

総合スコア1083

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tohtsukipxn

2019/05/06 09:55

本当に解決して下さりありがとうございした。 また素人に対しとても親切にしてくださり感謝します。解決したときはしても感動しました。 15分以上考えたら問合せ。。なるほどと思いました。30時間ぐらいやっていたように思います。笑 今後ともよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問