オンラインで直接顔を突き合わせずに仕事ができるようになったり、会社が大きくなってきたりすると、たまの飲み会で顔を突き合わせてもあれこの人どこの誰だっけ、となることもしばしば。
物理的な会なら名札を配るところ。オンラインでの会なら、バーチャル背景に自分のプロフィールを書いておくのがオススメだけど、わざわざ全員が自分のを作るのは面倒なので自動化する、ということで今回は Google Apps Script で Slack のプロフィールカードを作ることにする。
GitHub - motemen/gas-slack-profile-card-slide-generator
動きはこんな感じ。
Slack Profile Card Generator demo - YouTube
Google と Slack でログインすると、Slack のプロフィールを元に Google スライドを作ってくれる。
いちおうデプロイしたものが以下にあるが、Google ドライブの権限をかなり広く要求するので、まあ信頼できる人が内輪向けに作ったのを利用するのがいいと思う。
セットアップ
というわけで自前でデプロイする方法。
@google/clasp を使っている。clasp のセットアップができている環境で yarn setup
すると
clasp create --type webapp
して GAS プロジェクトを作成、yarn build
でコードを生成、yarn push
で反映させる。
これをやった上で、プロジェクトを GAS でウェブアプリとしてデプロイすれば OK(完全に動かすには下記の設定が必要)。
Slack でログインさせてプロフィール情報を取得したいので、Slack App を作成する必要がある。便利なことに、右上の「Slack App Manifest」から https://api.slack.com/apps で使える JSON 形式の manifest を表示できるので、コールバック URL とか必要なスコープとかを手入力する必要はないはず。
後はいつもどおり GAS エディタで「プロジェクトの設定」→「スクリプト プロパティ」を開き、Slack アプリの SLACK_CLIENT_ID
、SLACK_CLIENT_SECRET
をそれぞれ設定。それに加えて、プロフィールカードのテンプレートとなるスライドの ID(Google スライドの URL の https://docs.google.com/presentation/d/<この部分>/edit
)を TEMPLATE_SLIDE_ID
として設定すれば設定完了。
テンプレートスライドの作成
テンプレートとなる Google スライドはこんな感じ。
https://docs.google.com/presentation/d/1jwKNAl-MaMhfRSufmoTT3VX1g5Q-_q-EGkCszQo74Xc/edit#
このテンプレートをコピーして、プレースホルダっぽい要素が書き換えた新しいスライドを生成する。スライドは微調整の上、PNG なり SVG なりでダウンロードできる。
右上の「Template Variables」から、どんなテンプレート変数が使えるかが確認できる。ワークスペースに特有のフィールドも対応してるので便利ですぞ。