🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google Apps Script

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

Slack

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

Q&A

1回答

3210閲覧

slack APIによるメールアドレスとメンバーID取得方法について

dell_0

総合スコア25

Google Apps Script

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

Slack

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

0グッド

0クリップ

投稿2021/02/05 07:58

社員全員分の特定のメールのみを1つのアカウントに転送し、そのメールアドレスとメンバーIDを見て、slackに飛ばすような仕組みを作り運用しております。

スプレッドシートのA列にメールアドレス、B列にメンバーIDを記載し、下記のようにスクリプトに書いております。

コードの一部です for (var i=0; i<data.length; i++){ var mail = data[i][0]; var slackID = data[i][1]; if(mail === to){ // 完全一致のときの処理 // リクエストトークン     var params = {       method: 'post',       contentType: 'application/json',       payload: JSON.stringify({       channel: slackID, //       text:postMsg,           link_names: 1,           })          };             var response = UrlFetchApp.fetch('xxxxxxxxx', params);          console.log("response:", response);           return response; }

新入社員が入った場合、スプレッドシートに手動で記載しているため、自動化したいと考えております。

users.listですべて取得することはできるのですが、

var mail = data[i][0]; var slackID = data[i][1];

ここの部分をどのように変更すればいいかご教授いただけますでしょうか?

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

data に users.list で取得した結果が格納されるのであれば、こんな感じではないかと。

javascript

1var mail = data[i].profile.email; 2var slackId = data[i].id;

https://api.slack.com/methods/users.list

投稿2021/02/05 08:33

編集2021/02/05 08:33
papinianus

総合スコア12705

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

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

dell_0

2021/02/08 06:36

ご回答ありがとうございます。 function getSlackUser() { const slack_app_token = "xoxb-***************************"; const options = { "method" : "get", "contentType": "application/x-www-form-urlencoded", "payload" : { "token": slack_app_token } }; const url = "https://slack.com/api/users.list"; const response = UrlFetchApp.fetch(url, options); const members = JSON.parse(response).members; let arr = []; for (const member of members) { //削除済、botユーザー、Slackbotを除く if (!member.deleted && !member.is_bot && member.id !== "USLACKBOT") { let id = member.id; let email = member.profile.email; arr.push([real_name,id]); } } } これでmember.idとmember.profile.emailはとれるようになりました。 toは GmailApp .search(config.searchText, 0, 500) .forEach(function (thread) { thread.getMessages().forEach(function (message) { var subject = message.getSubject(); var to = message.getTo(); var msgFrom = message.getFrom(); var msgDate = message.getDate(); var msgBody = message.getPlainBody(); これでとっております。 このtoとmember.profile.emailが一致したときに、member.idを指定し、slackに転送したいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問