n8nで業務改善「タスク管理表から未対応を自動通知し、対応漏れを無くす」

s
satou
update 2022/6/12

今回はローコードツールのn8nを使って社内で共有できるタスク管理を作っていきます。

タスク管理は様々な業種や職種で活用できます。今までのタスク管理の方法を変えたくない!という方でも、スプレッドシートでタスク管理をしているのであれば、今までの管理方法は変えずに作れるので是非試してください。

こんな困りごとにおすすめ

  • 顧客対応や社内業務の状況が把握できず、顧客からのクレームが発生している
  • 従業員に外出先でも状況を入力させたい
  • 定期的に状況を通知して対応漏れを見逃さないようにしたい

n8nでの解決方法

「毎朝9時に、対応表から対応期日が過ぎていて未対応のものをLINEで通知する」を自動で実行出来るようにします。


やりたいこと

下記赤枠の2件を通知されるようにします。

完成フロー

n8nの毎朝9時に、スプレッドシートの対応表から対応期日が過ぎていて未対応のものをLINEで通知するワークフロー

ワークフロー作成

それでは作っていきます。


※この記事では基本的な操作説明は行っていません。
基本的な操作説明がわからない方は、まだn8nを操作したことがない人向けに「初めてn8nに触れる人向け!簡単ワークフロー」の記事がいくつかあるのでそちらを見て下さい。



Step0. 事前準備

スプレッドシートの準備

今回取得を行うスプレッドシートをGoogleドライブに準備してください。


下記のような、列見出しの表形式で作成したスプレッドシートを用意してください。

※最初の行が見出し、次の行以降が内容の表にすること。 タスク管理のスプレッドシート



Step1. Google Sheetsノード作成

Google Sheetsノードとは
・Googleスプレッドシートの取得・作成・更新・削除など操作が行えます。
公式の説明はこちら(英語)

スプレッドシートの読み込みを行うための設定をします。


ノードの追加

Google Sheetsノードを追加します。 Google Sheetsノード設定画面


ノードの役割をNotesに記入する

※何のためのノードなのかのメモ書きです。 必要無い方は飛ばして頂いてもかまいません。


「歯車マーク」で設定を開いて役割を書いておきます。

  • Notes:「スプレッドシートの読み込みを行う、」
  • Display note in flow?:true


Notesを書いておくと、ワークフローにも一部が表示され、設定画面を確認すれば何のためのノードなのか後からも確認できます。
※ノード数が増えると何の為のノードなのか分からなくなるのでメモ書きはおススメです。


Credentialの設定

「Authentication」を「OAuth2」に設定します。 Google Sheetsノード設定画面

認証を行う

Google Cloud Platformの値を「Client ID」と「Client Secret」に設定し「Sign in with Google」ボタンから認証を行います。 Google Sheetsノード認証設定画面


Parametersの設定

認証以外のParametersを設定します。

  • Resource:Sheet
  • Operation:Read
  • Spreadsheet ID:スプレッドシートID(スプレッドシートのURLの値をセットする「~spreadsheets/d/ スプレッドシートID /edit~」)
  • Range:A:F(自身のスプレッドシートに合わせて変更)
  • RAW Data:false
  • Data Start Row:1(自身のスプレッドシートに合わせて変更)
  • Key Row:0(自身のスプレッドシートに合わせて変更)
  • Value Render Mode:Formatted Value


※「Range」「Data Start Row」「Key Row」 タスク管理のスプレッドシート

※「Value Render Mode:Formatted Value」は日付形式の値を日付として受け取る為の設定です。


「Execute node」を実行する

スプレッドシートの内容が取得出来ました。 n8n Google Sheetsノードでスプレッドシートを取得した実行結果


ここまでのフロー

n8n スタート、Google Sheetsノードのワークフロー



Step2. Date & Timeノード作成

Date & Timeノードとは
・日付と時刻のデータを操作し、それをさまざまな形式に変換出来ます。
公式の説明はこちら(英語)

現在日付を取得

現在の日付は毎朝の時点の状況で判定するために必要です。


ノードの追加

Date & Timeノードを追加します。 n8n Date & Timeノード設定画面


ノードの役割をNotesに記入する
  • Notes:「現在日付を取得。日付をスプレッドシートの形式に合わせる。」
  • Display note in flow?:true


Parametersの設定
  • Action:Format a Date
  • Value:{{new Date()}}(Expressionに設定)
  • Property Name:date
  • Custom Format:true
  • To Format:M/D


※「{{new Date()}}」
「new Date()」はJavascriptというプログラミング言語で現在の日付と時刻を取得するコードです。 n8nでは「{{}}」の中にコードが書けるので組み合わせて「{{new Date()}}」と書いて取得します。

※「To Format」の選択肢に自身のスプレッドシートで使っている日付形式がない場合だけ「Custom Format」をtrueにして、「To Format」を自分で書きます。
例) 「2022年11月24日」の場合->「YYYY年MM月DD日」


「Execute node」を実行する

今回のスプレッドシートの日付形式と同じ形式で現在日付が取得できました。 n8n Date & Timeノードで現在日取得結果


ここまでのフロー

n8n スタート、Google Sheets、Date & Timeノードのワークフロー



Step3. Mergeノード作成

Mergeノードとは
・条件を決めて統合することが出来ます。
公式の説明はこちら(英語)

Google SheetsノードとDate & Timeノードの取得結果をマージ(統合)します。


ノードの追加

Mergeノードを追加します。 n8n Mergeノード設定画面


ノードの役割をNotesに記入する
  • Notes:「Google SheetsノードとDate & Timeノードの取得結果をマージ(統合)する。」
  • Display note in flow?:true


フローを繋げる

下記をそれぞれ繋げる。

Google SheetsノードをMergeノードの「Input1」

Date & TimeノードをMergeノードの「Input2」 n8n Google Sheets、Date & Time、Mergeノードを繋げた状態


Parametersの設定
  • Mode:Multiplex


「Execute node」を実行する

スプレッドシートの取得結果の後ろにDate & Timeノードで取得した現在日付が追加されます。 n8n Mergeノード実行結果


ここまでのフロー

n8n スタート、Google Sheets、Date & Time、Mergeノードのワークフロー



Step4. IFノード作成

IFノードとは
・条件判定を行い、条件が正しい場合と正しくない場合で実行するワークフローを変更できる。
公式の説明はこちら(英語)

取得した値を条件で絞り込みます。

今回の条件は「対応期日が過ぎていて未対応のもの」です。


ノードの追加

IFノードを追加します。 n8n IFノード設定画面


ノードの役割をNotesに記入する
  • Notes:「LINEに送信したいデータだけに絞り込む。抽出条件:対応期日が過ぎていて未対応。」
  • Display note in flow?:true
Parametersの設定
  • Add Condition:Date & Time
  • Value 1:{{$json[“対応期日”]}}(Expressionに設定)
  • Operation:Occurred before
  • Value 2:{{$json[“data”]}}(Expressionに設定)

  • Add Condition:String
  • Value 1:{{$json[“対応完了日”]}}(Expressionに設定)
  • Operation:Is Empty


「Value」に設定する値は「Expression」の「Current Node」->「Input Data」->「JSON」から選択できます。

※「Input Data」が表示されていない場合はMergeノードを1度実行してください。
前のノードが1度も実行されていないと渡ってくるデータが分からず選択できません。


「Execute node」を実行する

設定した条件で抽出できました。

条件に一致したデータをLINEで通知します。


条件に一致

(対応期日が過ぎていて未対応)のデータが取得されています。 n8n IFノード実行trueの結果


条件不一致

一致しなかったデータも確認できます。 n8n IFノード実行falseの結果


ここまでのフロー

n8n スタート、Google Sheets、Date & Time、Merge、IFノードのワークフロー



Step5. Setノード作成

Setノードとは
・新しくデータを作ったり、受け取ったデータを書き換えたりでき、次のノードに渡すことが出来る。
公式の説明はこちら(英語)

LINEに通知したい内容に値を編集します。


ノードの追加

Setノードを追加します。 n8n IFノードとSetノードのワークフロー


ノードの役割をNotesに記入する
  • Notes:「取得したデータをLINEに通知したい内容に編集する。」
  • Display note in flow?:true


フローを繋げる

一致した結果はtrueに繋げることで取得できます。 n8n IFノードとSetノードのワークフロー


Parametersの設定
  • Add Value:String
  • Name:LINE(好きな名前で構いません)
  • Value:LINEに表示したい内容(Expressionに設定)

※今回はValueに下記のように書いています。
内容:{{$json[“内容”]}}
担当者:{{$json[“担当者”]}}
対応期日:{{$json[“対応期日”]}}


「Execute node」を実行する

Parametersに設定した内容でLINEという新しい項目が作られました。 この項目をLINEに送信します。 n8n Setノードの実行結果


ここまでのフロー

n8n スタート、Google Sheets、Date & Time、Merge、IF、Setノードのワークフロー



Step6. Lineノード作成

Lineノードとは
・取得した内容をLINEへ通知することが出来ます。
公式の説明はこちら(英語)

LINE通知の設定します。


ノードの追加

Lineノードを追加します。 n8n Lineノード設定画面


ノードの役割をNotesに記入する
  • Notes:「LINEに通知する。」
  • Display note in flow?:true


Credentialの設定

LINE Notifyの情報を設定して「Connect my account」ボタンから設定を行います。 n8n Lineノード設定画面


※LINE Notifyの設定方法が分からない方はLINE Notifyの設定方法の記事 があるのでご参考ください。


Parametersの設定

認証以外のParametersを設定します。

  • Resource:Notification
  • Operation:Send
  • Message:{{$json[“LINE”]}}(Expressionに設定)


「Execute node」を実行する

2件送信されました。 n8n Lineノード実行結果

LINEで通知内容を確認するとSetノードで作成した内容で2件通知されています。 n8nから通知された内容をLINEで受け取った画面


ここまでのフロー

n8n スタート、Google Sheets、Date & Time、Merge、IF、Set、Lineノードのワークフロー



Step7. Cronノード作成

Cronノードとは
・ワークフローを一定の日付、時間、または間隔で定期的に実行するようにスケジュールできます。
※タイムゾーン(標準時間帯)の設定に注意しましょう。日本時間の場合はTokyoを選択しておく必要があります。
公式の説明はこちら(英語)

自動化する

今は手動で実行しないと動きません。

毎朝9時に自動でLINE通知できるように設定します。


※デスクトップアプリを立ち上げていないと自動実行も行われないので注意しましょう。


ノードの追加

Cronノードを追加します。 n8n Cronノード設定画面


ノードの役割をNotesに記入する
  • Notes:「毎朝9時に実行する。」
  • Display note in flow?:true


フローを繋げる

開始ノードをStartノードからCronノードに変更します。 n8n ワークフロー画面


※Startノードは使用しないので分かり易くする為に、Activate/DeactivateNodeボタンでDisabledにしています。 Disabledにしなくても特に問題はありません。


Parametersの設定
  • Mode:Every Day
  • Hour:9
  • Minute:0


※Cronノードを使用する時は、タイムゾーン(標準時間帯)の設定に注意しましょう。日本時間の場合はTokyoを選択しておく必要があります。
ワークフローごとにタイムゾーンの設定が可能です。
「Workflow」->「Settings」 n8n Workflow設定画面


「Execute node」を実行する

結果を返すノードではないのでこれで成功です。 n8n Cronノード実行結果


ここまでのフロー

n8n Cronノード実行結果

これで、「毎朝9時に、スプレッドシートの対応表から対応期日が過ぎていて未対応のものをLINEで通知する」ワークフローは完成です。

(通知を1回にしたい場合)Step8. Item Listsノード作成

Item Listsノードとは
・リスト(配列)で受け取ったデータを1件のデータにしたり、重複削除や並べ替えなど加工が出来ます。
公式の説明はこちら(英語)

現状のフローだと、通知対象の件数分の通知が行われます。 1回の通知にまとめたい場合はこのStepでフローを変更してください。
通知対象(対応期日が過ぎていて未対応のもの)が複数件の場合でも1通にまとめて通知する場合の設定です。


ノードの追加

Item Listsノードを追加します。 n8n Item Listsノード設定画面


ノードの役割をNotesに記入する
  • Notes:「受け取ったデータが複数の場合、1件にまとめてLINEノードにデータを渡す。」
  • Display note in flow?:true


フローを繋げる(必要な場合のみ)

SetノードとLineノードの間に繋げます。 n8n Item Listsノードを繋げたワークフロー


Parametersの設定
  • Operation:Aggregate Items
  • Input Field Name:LINE(Setノードで設定した項目名)
  • Rename Field:false


「Execute node」を実行する

n8n Item Listsノード実行結果


LineノードのParametersの設定を修正する

Lineノードに渡すデータがItem Listsノードで設定したものに変わったのでLineノードの設定も修正します。

Parameters

  • Message:{{$json[“LINE”].join(', ')}}(Expressionに設定)

※リスト(配列)で受け取っているのでLINE横のアイコンをクリックすると選択できるようになっています。

その中から「Values」を選びます。 n8n LineノードExpression設定画面


「Execute node」を実行する

実行結果が1件になっています。 n8n Lineノード実行結果

LINEで通知内容を確認すると通知も1件でされています。 n8nから通知された内容をLINEで受け取った画面


通知を見やすく改行する

1件目と2件目が「,」で区切られていて少し見づらいので、改行するように修正します。


Parameters修正

  • Message:{{$json[“LINE”].join(‘\n\n’)}}(Expressionに設定)

「\n」で改行を意味します。

※「\」と打つとn8nアプリでは「バックスラッシュ」で表示されますが問題ありません。


「Execute node」を実行する

繋がっている文章を2回改行したので1行空行を入れて見やすく出来ました。 n8nから通知された内容をLINEで受け取った画面


完成したワークフロー

n8n 毎朝9時に、スプレッドシートの対応表から対応期日が過ぎていて未対応のものをLINEで通知するワークフロー

最後に

いかがだったでしょうか?

ノード数は少し多いですが、一つ一つのノードで何をしたいのかをハッキリさせておくことで理解もしやすくなると思います。

効率化だけではなく、漏れや見落としなどを減らし業務の質を上げることにも繋がると思いますので、ぜひ取り入れてみてください。

あなたのデジタル化も
掲載しませんか?

Google Formで入力する