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

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

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

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

1回答

1887閲覧

githubAPIとincoming hook使ってgas上でgithubからとってきたteamをslackに送る。

wataamenoarashi

総合スコア9

Google Apps Script

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

0クリップ

投稿2020/02/19 10:58

githubAPIとincoming hook使ってgas上でgithubからとってきたteamをslackに送りたいです。
githubからgasまでJASON形式でteamの情報を持ってくることには成功しました。(Logger.logで確認済み)
しかし、JSONデータをslackに送ることができません。
最初は、"payload" のところをres(取得したそのままのJASONデータ)にしてJASONのままslackに送ろうとしたのですが、GASのドキュメントにpayloadの引数はJASON使えないと書いてあったので、JASON.parseで一度javascript objectへ変換して送ってみましたが、送れません。エラーの意味と解決法を教えていただけるとありがたいです。

以下コードです。具体的なurlやアクセストークンは利用されたら困るので隠しています。

function doPost(e) {

//githubAPIで情報とってくる。
var url_get = "https://api.github.com/orgs/----(org名)----/teams";
var accessToken = "---適切なやつ---";
var options_get = {
"method" : "get",
"headers" : {"Authorization":"Bearer " + accessToken}
};

var res = UrlFetchApp.fetch(url_get, options_get); //githubから取得
var res_js = JSON.parse(res);

postSlack(res_js);

// slackにpostするメソッド
function postSlack(data){

// Incoming WebHookのURL設定 var url_out = "---送りたいurl---"; // gas → slackに先ほど取得したデータをPOST var options = { "method" : "POST", "headers": {"Content-type": "application/json"}, "payload" : data //payloadにjsonファイルを持たせたいができる…? }; UrlFetchApp.fetch(url_out, options);

}
}

以下エラー文

指定された属性(payload[0])の値({parent=null,
(略)
が無効です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

そもそもGithub APIでくるものをそのまま投げるのは無理では。

https://developer.github.com/v3/teams/#list-teams
によれば

json

1[ 2 { 3 "id": 1, 4 "node_id": "MDQ6VGVhbTE=", 5 "url": "https://api.github.com/teams/1", 6 "html_url": "https://api.github.com/teams/justice-league", 7 "name": "Justice League", 8 "slug": "justice-league", 9 "description": "A great team.", 10 "privacy": "closed", 11 "permission": "admin", 12 "members_url": "https://api.github.com/teams/1/members{/member}", 13 "repositories_url": "https://api.github.com/teams/1/repos", 14 "parent": null 15 } 16]

のようなものが返却されますが、Slack Incoming WebHookが受け付ける形式は
https://api.slack.com/reference/messaging/payload
https://api.slack.com/messaging/webhooks#posting_with_webhooks
にあるように例えば

json

1{ 2 "text": "Danny Torrence left a 1 star review for your property.", 3 "blocks": [ 4 { 5 "type": "section", 6 "text": { 7 "type": "mrkdwn", 8 "text": "Danny Torrence left the following review for your property:" 9 } 10 }, 11 { 12 "type": "section", 13 "block_id": "section567", 14 "text": { 15 "type": "mrkdwn", 16 "text": "<https://example.com|Overlook Hotel> \n :star: \n Doors had too many axe holes, guest in room 237 was far too rowdy, whole place felt stuck in the 1920s." 17 }, 18 "accessory": { 19 "type": "image", 20 "image_url": "https://is5-ssl.mzstatic.com/image/thumb/Purple3/v4/d3/72/5c/d3725c8f-c642-5d69-1904-aa36e4297885/source/256x256bb.jpg", 21 "alt_text": "Haunted hotel image" 22 } 23 }, 24 { 25 "type": "section", 26 "block_id": "section789", 27 "fields": [ 28 { 29 "type": "mrkdwn", 30 "text": "*Average Rating*\n1.0" 31 } 32 ] 33 } 34 ] 35}

のようなものです。

Github APIで得た情報のうち何をSlackに投げたいのかを整理し、形式を変換するべきでしょう。

投稿2020/02/20 07:47

yumetodo

総合スコア5850

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

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

wataamenoarashi

2020/02/20 16:15

解決しました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問