Created
May 30, 2017 02:47
-
-
Save hasegawayosuke/7276fa20729bced4b022f65c124c3abb to your computer and use it in GitHub Desktop.
Slackのチャンネル一覧とそれぞれのpurposeを取得して指定されたチャンネルに投稿する
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Slackのチャンネル一覧とpurposeを投稿 | |
//[ファイル]→[プロジェクトのプロパティ]→[スクリプトのプロパティ]に以下の各プロパティを設定すること | |
// slack_api_token APIトークン。 https://api.slack.com/docs/oauth-test-tokens で Create Token を押すと生成される xxxx-1234567890-1234567890 のような値 | |
// channel 投稿するチャンネル | |
function slackApi(token, path, params) { | |
if(!params) params = {}; | |
var url = "https://slack.com/api/" + path; | |
var q = "?token=" + encodeURIComponent( token ); | |
for( var key in params ){ | |
q += "&" + encodeURIComponent( key ) + "=" + encodeURIComponent( params[ key ] ); | |
} | |
url += q; | |
var res = UrlFetchApp.fetch( url ); | |
var ret = JSON.parse( res.getContentText() ); | |
if( ret.error ){ | |
throw "GET " + path + ": " + ret.error; | |
} | |
return ret; | |
} | |
function slackPost (token, channel, text, attachments) { | |
var options = { | |
"method" : "POST", | |
"payload" : { | |
"channel" : channel, | |
"text" : text, | |
"username" : "bot" | |
} | |
}; | |
if( attachments !== undefined ){ | |
if( !attachments instanceof Array ){ | |
attachments = [ attachments ]; | |
} | |
options.payload.attachments = JSON.stringify( attachments ); | |
} | |
return UrlFetchApp.fetch("https://slack.com/api/chat.postMessage?token=" + token, options); | |
} | |
function main(){ | |
var channels, token, channel, text = ""; | |
token = PropertiesService.getScriptProperties().getProperty("slack_api_token"); | |
channel = PropertiesService.getScriptProperties().getProperty("channel"); | |
if (channel.charAt(0) !== "#") channel = "#" + channel; | |
if (!token) { | |
throw 'You should set "slack_api_token" property from [File] > [Project properties] > [Script properties]'; | |
} | |
channels = slackApi(token, "channels.list"); | |
channels.channels.forEach( function (ch) { | |
text += "#" + ch.name + " " + ch.purpose.value + "\n"; | |
}); | |
slackPost(token, channel, text); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
こんにちは。
まさにこの作業が行いたかったので使わせていただきたいなと思っています。
質問させていただきたいのですが、
12行目がundefinedであるとエラーが出る場合、どう編集するのがよいでしょうか?
単純に消してしまって、実行してみました。
Slackの指定したチャンネルへの書き込みが見つからないので、上記含めた過不足な点があるのだと思いますが、ご教授願えますでしょうか。
たとえば、プロパティに指定するchannelは、目的のチャンネルの名称でよいのでしょうか?
よろしくお願いいたします。