gas dopost デバッグ 10
そこでこのようにGASへPOSTされたデータをeという引数で取得をすることが一般的ですが、このeの中身がどうなっているのか確認したいと思っています。 Logger.logではPOSTされたデータを確認できないので困っています。 何か良い方法はないでしょうか。 で、あんまり好きじゃないけど、一時期仕事で触っていたGoogle Apps Script(以下GAS)やるか、、となったものの、相変わらずトラップが多いので、備忘録的にまとめようと思いました。, 気が向いたら何回か書くと思いますが、GASの文法とかWebのお作法などは特に触れません。, 重要)スプレッドに書くだけならさして苦労はないものの、レスポンスを返す場合はライブラリ「HttpRedirect」を使う必要があります。(※4), 1)GASのプロジェクトを用意し、Webアプリケーションとして公開する 2)Arduinoに書き込みを行う。, 方法1) スプレッドシートも使いたい場合・スプレッドを起動。メニューの<ツール> - <スクリプトエディタ>を開く, 方法2) 独立したプログラムファイルを作りたい場合・Googleドライブの新規作成で、"Google Apps Script"を選択, https://developers.google.com/sheets/api/guides/concepts?hl=ja, 1)スクリプトエディタのメニュー"公開" -> "webアプリケーションして導入" を開く, Current web app URL: -> 変更する部分はなし。URLはArduinoのコードに記載するので、コードの上の方にでも書いておくのがベター。 /macros/s/●●/exec というルール。Arduinoのファイルに書くScriptIDはこれを使う。 Project version -> Newを選択 ※コードの変更を反映する度に都度更新が必要。GASを書き換えてctrl+Sだけだと、最新に反映されない。 Execute the app as: -> 自分のGoogleアカウントを選択 WHo has access to the app -> Anyone,even anymous を選択, 2)アクセスの許可IDE上の虫マーク横の関数「doPost」を選択して、虫マークをクリックして実行。途中、実行の許可を求められるのでOKする。, ●やること 1)下記のGitHubからHTTPSRedirect.cppとHTTPSRedirect.hとDebugMacros.hをコピーする, 2)HTTPSRedirect.cppの89行目。 //stop();の//を消して実行できるようにする。, ※コメントアウトしたままだと、スプレッドは更新されるがESP32側が停止する。 ※ESP32での動作確認時に変更。もしかしたら8266は変更不要かもしれない。, 参考)https://github.com/electronicsguy/ESP8266/issues/91, GAS側のレスポンスは適当な文字列にしていますが、レスポンスによってESP32で分岐を加えると色々遊べると思います。, ぶっちゃけAWS S3にデータ置く方がはるかに楽だし、マイコンよりもラズパイ使った方が情報も多くて簡単。しかし、ハードを小さく安価に。ソフトもお金をかけたくない。Ambientのようなサービスを使わず自前で用意したいという場合は、もう一周回ってGASでいいやと思いました。, 次回は時間があれば、M5CameraかMaixduinoの画像をGoogleドライブにアップロードなど。, ちなみにGET/POSTがどうとか、Webのお作法的なものを基礎から押さえたいという方は「Webを支える技術」あたり読むのが良いかもしれません。, ※1) 仕事都合により個人で使ってたAWS RDSが、ほんのちょっとしか使ってないのに請求$400overした。 カードの不正利用疑いで一瞬止められてたのもあり、深夜に4-50万と見間違えて死ぬかと思った。, ※2) JavaScriptに対する愛が薄いので、突っ込んだ話はしません。詳しく知りたい場合は検索「EcmaScript GAS」を推奨。, ※3) 多くの企業は情シスが社内ドメイン以外からのGsuiteアカウントへのアクセスに制限をしているはず。, ※4) GASの仕様でdoPost関数使うとリダイレクトが発生するが、ライブラリ「WiFiClientSecure」はリダイレクトに追従しない。 そのため、レスポンスを取ろうとすると、レスポンスコード302で詰まる。, ※4) 書籍もいくつか出ているけれど、特に買う必要はないと思う。仕事のために数日で覚えるために買ったけれど、あまり必要なかった。, PythonでMIDIを作ってYAMAHAのTENORI-ONをごにょごにょするよ。, bastardeyesさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog どーもオーカワ(@okawa_compass)です。最近忙しすぎてブログ更新遅くなりました。 Contents1 GASのログ出力はconsole.logが使えないと思っている人多くないですか?2 軽いデバッグなどにはL […] GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~, VBAやGoogle Apps Scriptのツール開発と研修をセットで依頼される企業が増えている理由. | "http://www.w3.org/TR/html4/frameset.dtd", 【Java & Tomcat】HttpServletResponseインターフェイスについて知ろう, 【Java & Tomcat】Webアプリケーションの設定(web.xmlの設定)※サンプルプログラム付き, 【Java & Tomcat】Webアプリケーションの設定(マッピング)※サンプルプログラム付き, 【Java & Tomcat】コンテンツタイプの設定(setContentType)※サンプルプログラム付き, 【Java & Tomcat】サーブレットのライフサイクル ※サンプルプログラム付き, 【Java & Tomcat】文字出力用のストリームの取得(getWriter)※サンプルプログラム付き, 【Java & Tomcat】リダイレクトの設定(sendRedirect)※サンプルプログラム付き, 【Java & Tomcat】サーブレットからフォームデータを取得する(サンプルコード付き), 【Java & Tomcat】サーブレット開発をEclipseでするための初期設定を画像付きで分かりやすく解説, [2] HttpServletを継承して、ServletPostクラスを定義する。, [3] データベースにある情報に見立てた変数accessCountInDatabaseを定義する。, [5] カウンターをインクリメントするためにincrementAccessCountInDatabase()メソッドを呼び出す。, [8]-[11] outオブジェクトに「POSTリクエストを受信」と「アクセス回数」を表示するHTMLコードを出力する。, [20][21] 変数accessCountInDatabaseの値を戻すメソッドloadAccessCountInDatabase()を定義する。, [30]-[31] 変数accessCountInDatabaseの値をインクリメントするメソッドincrementAccessCountInDatabase ()を定義する。. 今回はGASで取得したTrelloのボード情報をスプレッドシートに取込みます。, トリガーが実行されると引数が渡されます。その中からカレンダーIDを取り出し、どのカレンダーが更新されたのか特定します。カレンダーIDが分かれば、カレンダー名も取得できるので、カレンダー名をチャットワークへ送信します。, Google Apps Scriptで日付&時刻のライブラリMoment.jsを紹介しています。日時計算の際に元のmomentオブジェクトが変更されてしまうので、cloneメソッドで回避する方法をお伝えします。, Google Apps Scriptで日付&時刻の便利ライブラリMoment.jsを使う方法についてお伝えしています。今回はmomentオブジェクトによる日時の加算・減算についてお伝えしていきます。, 「初心者でもわかるGoogle Apps Scriptのクラス」についてシリーズでお伝えしています。今回は、GASでset構文によるセッターを使って上書き禁止のプロパティを作る方法をお伝えします。, 初心者向けのGoogle Apps Script入門シリーズとして、GASプログラミングの基礎をお伝えしています。今回は、スプレッドシートからシートを取得する2つの方法をお伝えします。, 当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。, マネーフォワードクラウド請求書の請求書一覧の全件をスプレッドシートに書き出すスクリプト, GASでマネーフォワードクラウド請求書の請求書一覧をスプレッドシートに書き出す方法. ここでは、POSTリクエストに対応したメソッドdoPost()を取り上げている。そのAPI仕様を見る前に、doPost()の処理の流れを大まかに見てみよう。 POSTリクエストの処理するdoPost()は、サーバーにあるデータベースなどの情報を更新する処理のために使われる。 © Copyright 2020 エンジニアの入り口. 【GASユーザーのためのHTML入門】範囲指定するだけの便利なdivタグとspanタグ, GASでWebページを作成する際にCSSフレームワークBootstrapを導入する方法, GASで作成したWebページをスマホで表示させたいときのmetaタグviewportの設定, 詳解! クライアントから発せられたリクエストには様々なものがあるが、その中で今回はPOSTというリクエストが来た際の処理について説明する。, クライアントからのリクエストはサーブレットに渡され、そのサーブレットがリクエストの中にあるメソッドに対応した処理を行う。リクエストに含まれるメソッドには、次の図が示すようにGET、POSTなどいくつかの種類がある。そのひとつがPOSTリクエストである。, POSTリクエストは、HttpServletクラスを継承したサーブレットクラスで処理される。このサーブレットクラスで、POSTリクエストに対応した親クラスのHttpServletクラスのメソッドdoPost()をオーバーライドして、要求にあった処理をさせる。, この例では、サービスメソッドのdoPost()をオーバーライドしている。このdoPost()メソッドの中に、レスポンスとしてクライアントに返すデータの処理や表示する画面をHTMLで記述することになる。, ここでは、POSTリクエストに対応したメソッドdoPost()を取り上げている。そのAPI仕様を見る前に、doPost()の処理の流れを大まかに見てみよう。, POSTリクエストの処理するdoPost()は、サーバーにあるデータベースなどの情報を更新する処理のために使われる。クライアントから送られてくる画面入力情報は、GETとは違って外部から見えないので、クレジット番号などの入力に使える。処理の流れは次のようになっている。, doPost(HttpServletRequest req, HttpServletResponse resp), サーブレットにPOSTリクエストを処理させるためにサーバー(サービスメソッド経由)によって呼び戻される。, HTTP POSTメソッドは、無制限の長さのデータをウェブサーバーに一回で送信する、そして、クレジットカード番号のような情報を知らせる時に役に立つ。, このメソッドをオーバーライドする時、リクエストデータを読み、レスポンスヘッダーを書き、レスポンスのためのライターまたは出力ストリームオブジェクトを取得して、そして最後に、レスポンスデータを書く。Content TypeとEncodingを含むことがベストである。プリントライターオブジェクトを使う時、プリントライターオブジェクトにアクセスする前にContent Typeを設定する。, req -クライアントが生成するサーブレットへのリクエストを含む HttpServletRequestオブジェクト, resp - サーブレットがクライアントに送る返信を含む HttpServletResponseオブジェクト, java.io.IOException - もしサーブレットがリクエストを操作する時に、入力あるいは出力エラーが検出されるならば。, ServletException - もしPOSTのためのリクエストが処理できなかったならば。, このサンプルプログラムは、サーブレットにHTMLで書かれた画面からGETリクエストとPOSTリクエストを選んで送信することができるようになっている。, GETリクエストかPOSTリクエストの送信を選択するHTML画面表示のためのコードがservletget.htmlである。GETリクエストの送信は次のようなコードになっている。,