TLDR

ざっくり以下のような流れのプログラムをGoogleAppsScriptで書きます。

  1. Wantedlyからのメールを集積
  2. スカウトやメッセージについてのメールを抽出
  3. Todoistのタスクを作成

GitHubにてコードを公開していますので、詳細はそちらをご覧ください。

動機

登録して2週間、スカウトを頂けた

最近、Wantedlyを始めてみました。
登録して2週間ほどで、VBAの経験しかないぼくにスカウトメッセージを送ってくださる企業様が数社いらっしゃり、とても驚きました。
企業様、Wantedlyにはすごく感謝はしているのですが、ぼくにとっての問題というか、不便に思うところがあります。

普段のぼくのワークフローに合わせたい

ぼくは通知が苦手で、デスクトップの通知は基本OFFにしています。
スマホの通知もOFF、着信音も無音、バイブレーションも切っています。
その代わりに、

「電話折返し every day at 11:00」
「メール返信 every day at 13:00」
「チャット返信 every day at 15:00」

のようなDailyタスクをTodoistに登録しています。
Wantedlyもこのような具合でDailyタスク化し、登録したのですが、
メッセージは毎日来るものではないので、サイトを開いて閉じるだけという作業になります。
べつに時間はかからないのでいいのですが、毎日「メッセージ今日も無いな...」と思うのは辛いので、
メッセージが来た場合のみ返信するようタスクを適宜作成するようにしたいです。

Webhook,APIを公開していない...

そこで、スクリプトを書くことにしたのですが、
Wantedlyは、WebhookやAPIを公開していないようです。
探しても、Wantedly Open APIなるものしか見つけられず、
たとえば、

「スカウトメッセージが来たらChatworkへメッセージを飛ばす」
「企業様とのメッセージのやり取りをSlackと連携する」
「GitHubにて公開しているスキルシートとWantedlyのプロフィールを連携させる」

みたいなことをしようとすると、工夫が必要になります。
今回のTodoistへのタスク追加のスクリプトも同様です。

私はGmailを使用していることもあり、
GoogleAppsScriptにてスクリプトを書くことは決めていたので、
APIを使用せず(できず)、この機能を実現したいと思います。

やったこと

ざっくりフローを確認する

ざっくり以下のような流れとなります。

  1. Gmailでフィルターをかける -- label: Wantedly is:unread
  2. 種類(DM,スカウト)毎にメールを仕分ける
  3. 各種類について
    1. Todoistにてタスクを作成する

Gmailにてラベル、フィルターを作成する

メールボックスからメールを直接確認したいということもあると思うので、ラベルとフィルターを事前に作成しておきます。

ラベル名は「Wantedly」、
フィルター条件は、from:(@wantedly.com)
アクションは、「Wantedly」ラベルの追加、
としました。

GoogleAppsScriptコードを書く

実際にコードを書いていきます。が、ブラウザでそのまま書くのではなく、以下を叶えたいので少し準備します。

  • npmのパッケージを使いたい
  • Gitでバージョン管理をしたい
  • GitHubでコードの管理をしたい

詳しくは以下詳細に書きます。

詳細

環境準備

GoogleAppsScript(@google/clasp)

$ yarn init -y .
$ yarn add -D @google/clasp
$ mkdir ./src
$ yarn clasp init --type standalone --title '*** title ***' --rootDir ./src
$ $EDITOR src/index.ts

src/index.ts

typescript src/index.ts
function main() {
}

TypeScript

コーディング

動作テスト

メリット,デメリット,今後

メッセージが来ているかどうかを気にする必要がなくなった

企業様へ24時間以内に返信できるようになった

企業様ごとに、タスクを作成したい