TL;DR
- NotionのGitHub連携(Synced Database)は2022年後半にリリース予定なのでそれまでの代替手段として
- issitを使ってSlackのメッセージをGitHubのissueに登録する
- GitHub Acctions を使って、NotionのDatabaseにタスクを登録する
- 登録後のissueの状態の同期などはしない
目次
issit
Slack Appのインストール
ページを開いて「Slackに追加する」を押してインストールする。
許可すると追加される。
GitHub Appのインストール
Slackのissitホーム画面で「Install GitHub App」を押してGitHubの画面を開いたら、「Install」を押す。
対象リポジトリを選択してインストールする。
GitHubアカウントの認証
Slackのissitホーム画面で「Connect GitHub Account」を押して連携する。
動作確認
issit を利用するチャンネルを開いて、コマンドを入力してリポジトリを紐付ける。
/issit add yotiky/SlacktonotionNoFumidai
Slack に適当なメッセージを投稿し、 投稿したメッセージのメニューから「GitHubのissueにする」を実行する。
タイトルを入力して、本文はお好みで修正して「issueを作る」を押す。
成功していればGitHubのissueに追加されている。
GitHub Actions
Actions の作成
リポジトリをクローンして中身を自分のリポジトリへコピーする。
コードを変更してプッシュする
(一旦コミットするなどして、) 以下の変更を加える。
.github/workflows/main.yml
- typeを
opened
に変更 - ifブロックを削除
- issue-bodyを追加
on: issues: types: ['opened'] jobs: labeled-actions: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 uses: ./ with: issue-title: ${{ github.event.issue.title }} issue-body: ${{ github.event.issue.body }} url: ${{ github.event.issue.url }} integrations-token: ${{ secrets.NOTION_TOKEN }} db-id: ${{ secrets.DB_ID }}
action.yml
- issue-bodyを追加
issue-body: description: 'issue body' required: true
main.js
const notionToken = core.getInput('integrations-token'); const issueTitle = core.getInput('issue-title'); const issueBody = core.getInput('issue-body'); const url = core.getInput('url'); const dbId = core.getInput('db-id'); if (!notionToken || !issueTitle || !issueBody || !url || !dbId) { throw new Error('Missing environment var'); }
const properties = { Title: { title: [{ text: { content: issueTitle } }], }, 本文: { rich_text: [{ text: { content: issueBody } }], }, アドレス: { url: url, }, Status: { select: { name: 'new', }, }, };
ncc を使ってコンパイルした方がいいのかもだが、当該箇所だけならdist/index.js
を直接修正しても動く。
終わったらコミットしてプッシュしておく。
GitHubでActionsを開くと、workflowの実行結果が確認できる。
Notion
Integrationの作成
Integrationを開いて「New integration」を押して、Integrationを作成する。
適当に名前をつけてSubmit。
トークンをShowしてコピーしておく。
タスクデータベースの設定
タスクを追加するデータベースを作成する。
- 本文:Text
- アドレス:Url
- Status:Select
右上のメニューから「Share」を押して、IntegrationをInviteする。
先ほど作成したIntegrationを選択してInviteを押す。
最後に、URLからDatabaseのIDをコピーしておく。IDはURLの以下の部分。
https://www.notion.so/{workspace_name}/{database_id}?v={view_id}
GitHubのSecretを設定する
リポジトリの Settings > Secrets > Actions を開いて以下のSecretを登録する。
NOTION_TOKEN
の名前で、コピーしておいたNotionのIntegrationのトークンを設定DB_ID
の名前で、DatabaseのIDを設定
動作確認
ふたたびSlackでメッセージを投稿して、issit のショートカットを実行する。
GitHubのissueに登録され、Actionsのworkflowに実行状況、結果が表示される。
成功するとNotionのDatabaseにタスクが追加される。