10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

n8n.cloudを社内の定型業務を全自動化する基盤にした

Last updated at Posted at 2021-11-30

n8n.cloud

n8nはノーコードのオンプレミスiPaaS(Integration Platform as a Service)です。

でも、やっぱりホスティングしてもらいたいので私の会社ではn8nのホスティングサービスであるn8n.cloudを契約しました。

近々リブランディングされるらしいのでアツイです。

背景

私の所属している会社では、毎週製品の売り上げに関する客観的な指標を会議で共有していました。目的は期末までに目標を達成することで、数値が予定通り進んでいるかどうかで追加のアクションを取るべきか決定しています。いわゆるOKR(Objectives and Key Results)というものを運用しています。

私がこれの自動化に取り組む前は、販売プラットフォームが提供している簡素なレポートツールからOKRの管理ツールに値を転記していました。レポートツールの値がそのまま転記できるのであれば良いのですが、期によって今期のチャーンレートだけ含みたいとか特定のホスティングタイプは含まないようにしたいなど色々カスタマイズの要望が出てきて、レポートツールから値を取得するとき毎回検索条件を細かく指定して値を取得するという運用になってしまっていました。

これが、例えば期に一回だけ行うということであれば自動化しなくても全く問題ないのですが、毎週行っていたので各プロダクトマネージャー(私以外のエンジニアは全員プロダクトマネージャーです)の結構大きめな負担になっていました。そこで、私がそれらの定型作業を自動化し、PMの負担の軽減することに着手しました。

n8n.cloudを選定した理由

n8n.cloudを選定した理由はいくつかあります

  • さまざまなクラウドサービスとワンクリックで連携できる - Google SheetsやSlackやHTTP Basic AuthがWeb GUI上で設定できることが絶対条件でした
  • HTTPリクエストが出せる - 他にもノーコードプラットフォームはたくさんありますが、HTTPリクエストが出せるものはほとんどありません
  • 自力でホスティングする必要がない - オンプレミス版であるn8n.ioをAWS上で動かすことも考えましたがサービス間の連携が煩雑になるのでやめました
  • 安い - 月20ドルで20個ワークフローが動かせるのは非常に安いです

n8nのワークフローの例

これがn8nのワークフローの例です。濃い青色のノードがレポートツールのREST APIを叩いていて、右端の緑色のノードが結果をGoogle Sheetsに出力しています。他のノードは全てデータ変換のノードです。

n8nワークフロー.png

Functionノード

Get current quartarノードは一番面倒臭い処理を行っているコードが書かれているノードです。私の会社はなぜか3月が会計年度の始まりなので、現在時刻に基づいて私の会社における現在の期の始まりと終わりの日程を取得しています。このように、ノーコードプラットフォームでありながら、必要に応じてNode.jsのコードが書けるのもn8nの特徴です。(あまり多用すると遅くなります)

const QUARTER_OFFSET = 1;
const QUARTERS = [
  { start: [-1, 1], end: [2, 0] }, // Q4
  { start: [2, 1], end: [5, 0] }, // Q1
  { start: [5, 1], end: [8, 0] }, // Q2
  { start: [8, 1], end: [11, 0] }, // Q3
  { start: [11, 1], end: [14, 0] }, // Q4
];

const now = new Date();
const yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
const params = QUARTERS[Math.floor((now.getMonth() + QUARTER_OFFSET) / 3)];
const quarterStart = new Date(...[now.getFullYear(), ...params.start]);
const quarterEnd = new Date(...[now.getFullYear(), ...params.end]);
return [yesterday, quarterStart, quarterEnd].map(date => ({ json: { date } }));

将来の展望

現在は全てのデータをレポートツールのREST APIから直接取得しているのですが、将来的には一旦Google BigQueryに格納してから取得する方向に持っていきたいです。ワークフローの数が増えすぎて、レポートツールからアクセス制限を食らってしまうことがたまに起こっています。n8nはBigQueryもデータソースにすることができるので、一部の自動化業務はCloud FunctionsやCloud Workflowsで実装することになるかもしれませんが、n8n.cloudのサービス関連連携が容易であるという利点はGoogle Cloud Platformに勝るので、これからもn8n.cloudを利用していく予定です。

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?