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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

Q&A

1回答

1931閲覧

chatworkデータをGASで収集したいがERRORがでてしまう

hoshiko

総合スコア3

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

0グッド

0クリップ

投稿2021/02/27 05:53

編集2022/01/12 10:55

前提・実現したいこと

chatworkデータをGASで収集についてやってまして、
chatworkの個人設定情報を収集するところまではできたんですけど、
どうしてもグループチャットからメッセージを取得するところERRORがでてしまいます。

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

「UrlFetchApp.fetch(url, params);」の例外ハンドリングというERRORが出てしまって
それを対処するために例外ハンドリングで修正したつもりなんですが、
chatworkデータがnullで返ってきてしまいます。。
引数にparamsを使ってないからだと思うんですが、例外ハンドリングをすると
「UrlFetchApp.fetch(url, (例外ハンドリング)params);」
でオブジェクトが3つも入ってるというERRORが返ってきてしまうため、paramsを入れられないのですが
どのように対処すればよいかご存知の方がいらっしゃったらご教授いただきたいです。
(APIトークンとルームIDは便宜上記載しておりません)

該当のソースコード

//CWから日報データを取得する

function getNippoData() {
var params = {
headers : {"X-ChatWorkToken" : 'APIトークン'},
method : "get"
};

var roomID = ルームID;//ルームID

試したこと

var url = "https://api.chatwork.com/v2/rooms/" + roomID + "messages?force=0";//指定のグループCWからメッセージを取得
var payload = {"value": "key"};
var strRespons = UrlFetchApp.fetch(url, //CWエンドポイントからレスポンスを取得
{
method: "PUT",
contentType: "application/json",
payload: JSON.stringify(payload),
muteHttpExceptions: true,

}
);
var json = JSON.parse(strRespons.getContentText());//文字列をJSON形式として解析しオブジェクトとして返す

for(var obj in json){
Logger.log(obj.body);
}
}

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

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

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

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

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

guest

回答1

0

メッセージを取得したいのであれば

js

1method: "GET",

ですね。
https://developer.chatwork.com/ja/endpoint_rooms.html#GET-rooms-room_id-messages

追記

理解できました。エラーハンドリングしたいならこうしたらいいです。

js

1var params = { 2 headers : {"X-ChatWorkToken" : 'APIトークン'}, 3 method : "get", 4 muteHttpExceptions: true, 5}; 6UrlFetchApp.fetch(url, params);

投稿2021/03/01 23:22

編集2021/03/05 07:28
macaron_xxx

総合スコア3191

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

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

hoshiko

2021/03/02 04:50

ご連絡いただきありがとうございました。 getで試してみたのですが、やはりログの戻りがnullで返ってきてしまいました… 例外ハンドリングのあたりがおかしいのかと思うのですが、 もしお分かりでしたら、ご確認いただけますと幸いです。
macaron_xxx

2021/03/02 06:52

>例外ハンドリングのあたりがおかしいのかと思うのですが どこにそんなコードがあるのですか?
hoshiko

2021/03/05 06:35

ご連絡遅くなり申し訳ありません。 https://tonari-it.com/gas-chatwork-message/ こちらのサイトを参考にしていたのですが、8行目でERRORがでてしまったため、 https://www.monotalk.xyz/blog/google-app-script-%E3%81%AE-urlfetchapp-%E3%81%AE-%E4%BE%8B%E5%A4%96%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/ こちらのサイトを参考に var strRespons = UrlFetchApp.fetch(url, 以下を例外ハンドリングに書き換えた形です。
macaron_xxx

2021/03/05 07:21 編集

あー。 muteHttpExceptions: true, を入れたってことですね 記載されたコードでは >「UrlFetchApp.fetch(url, (例外ハンドリング)params);」 >でオブジェクトが3つも入ってるというERRORが返ってきてしまうため こんなエラーでないと思うんですが。
hoshiko

2021/03/07 00:24

何度も申し訳ありません。ご教示いただいた例外ハンドリングで処理しても 返ってきたログががnullだったため、原因が他にあるのかもしれません。。。 //CWから日報データを取得する function getNippoData() { var params = { headers : {"X-ChatWorkToken" : 'b0a4cbfe093f9ef0ae56d0b400ec1232'}, method : "get", muteHttpExceptions: true, }; var roomID = 213313301;//ルームID var url = "https://api.chatwork.com/v2/rooms/" + roomID + "messages?force=0";//指定のグループCWからメッセージを取得 var payload = {"value": "key"}; var strRespons = UrlFetchApp.fetch(url, params); //CWエンドポイントからレスポンスを取得 var json = JSON.parse(strRespons.getContentText());//文字列をJSON形式として解析しオブジェクトとして返す for(var obj in json){ Logger.log(obj.body); } } もしお分かりになるようでしたら、こちらどうすればログにデータが返ってくるか ご教示いただけませんでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問