先日同様のタイトルで質問させていただいたのですがパスワードの有効期限が14日以下のユーザーの抽出まではうまくいったのですが、slackのDMで通知をする際、14日以下のユーザー情報がすべてDMの内容に記載されてしまいます。
これを14日以下になっている該当のユーザーに自分の情報のみを通知させたいと考えています。
プログラム自体素人の為、まったくいい方法が分からず困っています。
現在は以下のように作成しています。
GAS
1function alertContract() { 2 var mySheet = SpreadsheetApp.openById('○○○○').getSheetByName('××××'); //スプレッドシートを取得 3 var lastRow = mySheet.getLastRow(); //スプレッドシートの最終行を取得 4 var today = new Date(); //今日の日付を取得 5 6 7 /* 契約見直日まで14日切っていたらSlack投稿 */ 8 for (var i = 2; i <= lastRow; i++) { 9 var Di = mySheet.getRange(i, 1).getValue(); //ユーザー名を取得 10 var days = mySheet.getRange(i, 4).getValue(); //期限切れ日数を取得 11 var dateHi = new Date(mySheet.getRange(i, 2).getValue()); //有効期限を取得 12 if (days <= 14) { //2週間前に告知 13 14 var strText = "ADアカウントのパスワード期限が迫っています。パスワードの変更をお願いします。" + Di + " " + "有効期限切れまで" + days + "日前" + "\nhttps://docs.google.com/document/d/1P7L_" 15 16 postDM(strText); 17 } 18 } 19} 20 21 22const slack_app_token = "xoxb-△△△△"; 23 24//botからDMを送る 25function postDM(strText){ 26 var mySheet = SpreadsheetApp.openById('○○○○').getSheetByName('××××'); //スプレッドシートを取得 27 var lastRow = mySheet.getLastRow(); //スプレッドシートの最終行を取得 28 29 var message = strText 30 //【処理1】DMを開き、チャンネルIDを取得する 31 const member_id = mySheet.getRange(28,5 ).getValue(); //メンバーIDを指定 32 const channel_id = getChannelID_(member_id); 33 34 //【処理2】指定の[チャンネルID]にDMを送信する 35 const message_options = { 36 "method" : "post", 37 "contentType": "application/x-www-form-urlencoded", 38 "payload" : { 39 "token": slack_app_token, 40 "channel": channel_id, 41 "text": message 42 } 43 }; 44 45 //必要scope = chat:write 46 const message_url = 'https://slack.com/api/chat.postMessage'; 47 UrlFetchApp.fetch(message_url, message_options); 48 49} 50 51 52/** 53* メンバーIDを受け取りチャンネルIDを返す 54* 55* @param {string} メンバーID 56* @return {string} チャンネルID 57*/ 58function getChannelID_(member_id) { 59 60 const options = { 61 "method" : "post", 62 "contentType": "application/x-www-form-urlencoded", 63 "payload" : { 64 "token": slack_app_token, 65 "users": member_id 66 } 67 } 68 69 //必要scope = im:write 70 const url = 'https://slack.com/api/conversations.open'; 71 const response = UrlFetchApp.fetch(url, options); 72 73 const obj = JSON.parse(response); 74 console.log(obj); 75 76 return obj.channel.id; 77 78}
考えとしては条件に該当するユーザーのslackユーザーIDを取得してDMを送るようにすればいいのではないかと考えています。
どなたかご教授いただけませんでしょうか。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/24 01:58
2021/06/24 02:32 編集
2021/06/24 03:55
退会済みユーザー
2021/06/24 13:15
2021/06/25 01:41
2021/06/25 07:50
2021/06/25 08:36
退会済みユーザー
2021/06/25 08:38