もくじ
みなさまお元気でお過ごしですか?
eGAO終身宴会部長のタッキーです!
Google Apps Script(以下GAS)が大好き
お小遣い制の味方!
ありがとうGoogle
そんな訳でGASを使っていきます
目的
そんないつも予定がある訳ではないが、
あったらあったで困るので、ぱっと見で有無を確認したい
実現方法
いつもSlack見てるから、Slackステータスでぱっと見確認でいいジャマイカ!
GASでGoogleカレンダーから情報取得
有無によりSlackのステータスを変更
以上です!
実際のコード
お先に注意点
JSは独学で学んだものです。
お見苦しいコーディングかもしれません。
ではドゾ
function changeSlackStatus() {
// 日時取得
var now = new Date();
// 年・月・日を取得する
var year = now.getFullYear();
var month = now.getMonth() + 1;
var day = now.getDate();
var today = year + '/' + month + '/' + day;
// GoogleカレンダーのID取得
var googleCal = PropertiesService.getScriptProperties().getProperty('GOOGLE_CALENDER');
// 予定を取得
var cal = CalendarApp.getCalendarById(googleCal );
// 今日のイベントを取得
var events = cal.getEventsForDay(new Date(today));
// 予定の存在有無により、Slackステータスを変更する
if (events.length >= 1) {
var profile = {
"status_emoji": 予定有のアイコン名,
"status_text": ステータス文字
}
} else {
var profile = {
"status_emoji": 予定無時のアイコン名,
"status_text": ステータス文字
}
}
// Slackアクセストークンの取得
const SLACK_ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
// エンコーディング
var encodedProfile = encodeURIComponent(JSON.stringify(profile))
// Slack API を叩いてprofileを更新する
var result = UrlFetchApp.fetch('https://slack.com/api/users.profile.set?token=' + SLACK_ACCESS_TOKEN + '&profile=' + encodedProfile);
}
解説
PropertiesService.getScriptProperties().getProperty
(‘GOOGLE_CALENDER’);
とかってなってる部分はGASに設定したプロパティから値を取得してます。
ソースにべた書きでも問題なければ必要ありません。
あとは時間指定などして自動起動してあげれば毎日更新してくれます。
自分は有無だけでいいのでこのような形ですが、
実際のカレンダーのイベント情報をSlackに流すなり、
LINEに流すなりしてあげればもっと便利になります!
いじょー
お粗末様でした