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

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

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

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

4337閲覧

google apps script から node.js の読み替え[postの仕方]

blossan

総合スコア154

Google Apps Script

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/12/09 07:54

編集2016/12/10 11:20

御世話になります。
node.jsからapiを呼び出すhttp通信についてお聞きしたいことがあります。

今までgoogle apps scriptで開発をしていたのですが、急遽別の言語であるnode.jsを利用しなければならない状況になりました。

node.jsは、google apps scriptでも動くjavascriptで動いている言語なので、まず、
google apps script からnode.jsへの読み替えを学習の始めとしたいと考えています。

現在 google apps script で起動したapiのコードが以下になります。
認証を通して、apikeyを受け取るものです。

google

1function myFunction() { 2 var url = 'https://api.soracom.io/v1/auth'; 3 var headers = { 4 "Accept": "application/json" 5 }; 6 7 var payload = { 8 "email":"登録したメールアドレス", 9 "password":"登録したパスワード" 10 }; 11 12 var options = 13 { 14 15 'contentType': 'application/json', 16 "headers":headers, 17 "method": "post", 18 "payload" : JSON.stringify(payload) 19 }; 20 21 var response = UrlFetchApp.fetch(url,options); 22 var data = JSON.parse(response.getContentText()); 23 Logger.log(data); 24}

上記と同じpost通信をする機能をnode.jsで実現したいと思います。
自分でいろいろ思考錯誤し、requestモジュールを利用したのでが、エラーコードを吐いてしまいます。

上記のgoogle apps scriptと同じ機能を考えて作ったものです。
認証を通し、結果を受け取るというものです。

node.js

1var request = require('request'); 2 3 var headers = { 4 "Accept": "application/json" 5 }; 6 7 var payload = { 8 "email":"登録したメールアドレス", 9 "password":"登録したパスワード" 10 }; 11 12 var options = { 13 headers:headers, 14 'contentType': 'application/json', 15 uri:'https://api.soracom.io/v1/auth', 16 "payload" : JSON.stringify(payload), 17 json: true 18 }; 19 20 21request.post(options, function(error, response, body){ 22 if (!error && response.statusCode == 200) { 23 console.log(body.name); 24 } else { 25 console.log('error: '+ response.statusCode); 26 } 27});

【お聞きしたいこと】
node.jsでpost通信をする方法になります。文法的な指摘を頂ければと思います。

【追記】
ご指摘ありがとうございます。「ソラコムapiをlambdaのnode.jsで実行する」という目的のために開発を進めています。しかし、lambdaの使い方もnode.jsの書き方も分からない現状でした。そこで、唯一ソラコムapiで実行できたgoogle apps scriptを出発点に、質問し解決できればと考えていました。また、実行できたコードがあれば、質問し易いと判断したのですが、逆に誤解を与えてしまい申し訳ありませんでした。
コメントにありましたエラーですが、以下になります。
{
"errorMessage": "RequestId: 681aa76f-bec9-11e6-b389-bfe89320e0af Process exited before completing request"
}
よろしくお願いします。

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

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

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

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

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

mit0223

2016/12/10 00:50

どのようなエラーになったのか追記してもらえますか?同じ内容を違うプラットフォームでつぎつぎと質問されておりますよね?ソラコムのステマが疑われてしまいますよ。
guest

回答1

0

ベストアンサー

パッと見で気になる所が、以下に3つあります。

JSON

1 var options = { 2 headers:headers, 3 'contentType': 'application/json', 4 uri:'https://api.soracom.io/v1/auth', 5 "payload" : JSON.stringify(payload), 6 json: true 7 }; 8

1.
「'contentType': 'application/json'」は、最初に定義したheaders変数に含めるのでは?

2.
「"payload" : JSON.stringify(payload)」は、これだけ値がダブルクォーテーションで囲まれてますが、他が付いてないので不要では?

3.
あと payload という名称の利用は正しいのでしょうか?GithubのReadmeを見た感じだと、 body が使われているようですが。
(明快なサンプルが無いので試さないと分かりませんが)

書いてくいただいた、今回発生したエラーの内容ですが、これはAWSが「何か分かんないけどエラーになりました」と言ってる程度なので、「context.done」をソースに書いて、具体的なエラー内容を確認してください。

おまけ: Lambdaのトラブルシューティング

node.jsもLambdaも勉強中でしたら、まずはローカル環境のnode.jsでpostを成功させてから、Lambdaで試した方が早いと思います。

投稿2016/12/12 01:01

編集2016/12/12 01:02
kong

総合スコア181

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

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

blossan

2016/12/12 01:05

エラー自体もまだあやふやな状態だったのですね。ローカルで成功させてみます。回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問