👩‍❤️‍💋‍👨

slack投稿をgoogleCalendarに投げて言った言わないをなくして夫婦円満?

2023/02/02に公開

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 を作成

  1. slackの左上のワークスペース名をクリック
  2. 設定を管理→アプリを管理する
  3. 上の検索バーから Outgoing Webhook を検索
  4. slackに追加
  5. 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 設定

  1. google driveから新規→その他→Google Apps Scriptを選択
  2. function myFunction(){}は削除
  3. 以下コードをコピペしてslack_token を変更。
  4. 左上のスクリプト名を任意の名前に変更
  5. 必要に応じて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 });
}
  1. 右上のデプロイをクリック→新しいデプロイ

  2. 新しいデプロイ→ウェブアプリ

  3. 次のユーザーとして実行→自分

  4. アクセルできるユーザ→全員

  5. デプロイ

  6. アクセスを承認

  7. Google hasn’t verified this app → Advanced → Go to XXXXX (unsafe)

  8. XXXXX wants to access your Google Account → Allow

  9. ウェブアプリのURL をコピー

  10. 完了 をクリック

slack 設定

google app script のURLを 貼り付けて 設定を保存する

参考資料

Discussion