👩❤️💋👨
slack投稿をgoogleCalendarに投げて言った言わないをなくして夫婦円満?
slack投稿をgoogleCalendarに投げて言った言わないをなくして夫婦円満?
はじめに
チャットツールでslackを仕事で使ってらっしゃる方多いですね。
botやら連携でとっても便利です。
google calendarの予定をslackで教えてくれる連携機能はありますが、
slackのメッセージをgoogle calendarに登録する記事はあまり見かけません。
この機能は日記代わり&家庭内の言った言わないのよくある問題を解決できるのでは?
と思い記事にしました。
とはいっても導入したのは3年以上前で復習を兼ねて記事にしました。
※家庭内ではlineなどが多いと思い、最初lineでやろうとしたのですが、やりかたわからず、、 どなたか教えていただけると(私の)妻が幸せになれます。
設定概要
- google calendar で新しくカレンダーを作成
- slack で Outgoing Webhookを作成
- google app script でスクリプトを作成しデプロイ
- slack で スクリプトのパスを設定
google calendar で新しくカレンダーを作成
新しくカレンダーを作成します。
ここではslack_messagesとしてますが任意です。
slack で Outgoing Webhook を作成
- slackの左上のワークスペース名をクリック
- 設定を管理→アプリを管理する
- 上の検索バーから Outgoing Webhook を検索
- slackに追加
- Outgoing Webhookインテグレーションの追加
この画面にたどり着けばもう少しです。
引き金となる言葉
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,あ,い,う,え,お,か,き,く,け,こ,さ,し,す,せ,そ,た,ち,つ,て,と,な,に,ぬ,ね,の,は,ひ,ふ,へ,ほ,ま,み,む,め,も,や,ゆ,よ,ら,り,る,れ,ろ,わ,を,ん,っ,ぁ,ぃ,ぅ,ぇ,ぉ,っ,ゃ,ゅ,ょ,ア,イ,ウ,エ,オ,カ,キ,ク,ケ,コ,サ,シ,ス,セ,ソ,タ,チ,ツ,テ,ト,ナ,ニ,ヌ,ネ,ノ,ハ,ヒ,フ,ヘ,ホ,マ,ミ,ム,メ,モ,ヤ,ユ,ヨ,ラ,リ,ル,レ,ロ,ワ,ヲ,ン,ッ,ァ,ィ,ゥ,ェ,ォ,ッ,ャ,ュ,ョ,が,ぎ,ぐ,げ,ご,ざ,じ,ず,ぜ,ぞ,だ,ぢ,づ,で,ど,ば,ぱ,び,ぴ,ぶ,ぷ,べ,ぺ,ボ,ぽ,ガ,ギ,グ,ゲ,ゴ,ザ,ジ,ズ,ゼ,ゼ,ゾ,ダ,ヂ,デ,ド,バ,パ,ビ,ピ,ブ,プ,ベ,ペ,ボ,ポ
重要
投稿がアルファベットorひらがなorカタカナを転送対象にしますので漢字始まりは転送しません。
URL
こちらは最後に設定します
トークン
こちらの値を google app script に使います。
まだ保存せずにgoogle app scriptの 設定へ続く
google app script 設定
- google driveから新規→その他→Google Apps Scriptを選択
-
function myFunction(){}
は削除 - 以下コードをコピペしてslack_token を変更。
- 左上のスクリプト名を任意の名前に変更
- 必要に応じてcalendar_nameとmapping_slack_calendarsを変更。
function doPost(e) {
// slack Outgoing Webhook のtoken
const slack_token = "xxxxxxxxxxxxxxxxxxxxxxxx";
// 対象のgoogle calendar
const calendar_name = "slack_messages";
if (slack_token != e.parameter.token) {
throw new Error("invalid token.");
}
// e.parameter.user_name のマッピング
// user_nameはメールアドレスのメールアカウント文字列
// whoami@gmail.com → whoami
const mapping_slack_calendars = {
"papa": "🐷",
"mama": "🐰"
};
// slackの投稿主に応じてアイコンを変更
let user_name = e.parameter.user_name
if (e.parameter.user_name in mapping_slack_calendars) {
user_name = mapping_slack_calendars[e.parameter.user_name]
}
const text = e.parameter.text;
const title = user_name + ":" + text ;
const event = CalendarApp.getCalendarsByName(calendar_name);
event[0].createEvent(title, new Date(), new Date(), { description: text });
}
-
右上のデプロイをクリック→新しいデプロイ
-
新しいデプロイ→ウェブアプリ
-
次のユーザーとして実行→自分
-
アクセルできるユーザ→全員
-
デプロイ
-
アクセスを承認
-
Google hasn’t verified this app → Advanced → Go to XXXXX (unsafe)
-
XXXXX wants to access your Google Account → Allow
-
ウェブアプリのURL をコピー
-
完了 をクリック
slack 設定
google app script のURLを 貼り付けて 設定を保存する
Discussion