Open9

n8n

toyoshitoyoshi

Railway.appにセルフホストした。 $5で運用できてインストールもクリックだけで終わるので一番コスパいいと思う。動きも特に遅い感じはしない。($5の利用料がもらえるクーポン JrnQBV です。ぜひ使ってください)

テンプレートからn8nを選んでインストールすると自動で動き始める。
変更した点

N8N_EDITOR_BASE_URLをベタ書きにする

これにhttps://がついてないので、OAuthなどが使えなかった。Googleなどの認証で

Access blocked: Authorization Error
You can't sign in to this app because it doesn't comply with Google's OAuth 2.0 policy for keeping apps secure.

とかが出て困った。

TIMEZONEの変数を増やした

サーバサイドでUTCで処理されてしまうので GENERIC_TIMEZONEという変数をAsia/Tokyoにした。 Workerの方の環境設定に加える。

toyoshitoyoshi

デバッグ方法
code or functionノードを使う

return [
  {
    json: {
      endDateTime,
      condition:       (endDateTime > 18),
      typeName: (typeof endDateTime)
    },
  },
];
toyoshitoyoshi

作ったチャットを公開するには、チャットのノードの「Make Chat Publicly Available」をONにする。認証しない、BASIC認証、n8nの認証が選べる。

toyoshitoyoshi

フォームからアップロードしたバイナリを取得したい場合は、フィールド名を直接入力する

toyoshitoyoshi

Slackのインテグレーションメモ

  • Slackアプリを作る
  • n8nでは2つの認証情報が必要(Basic Informationで得られるトークンと、アプリをSlackにインストールした後に見れるようになるOAuth Tokens)
  • チャンネル一覧を表示させるには、channnel:readとgroup:readの権限が必要
  • Event Subscriptionsの方で設定するRequest URLはn8nの方のSlackノードに表示されるWebhookのTest URLを使うが、これはコロコロ変わる(n8nをリロードすると変わる?)ので注意。URLを一度表示したら、[Test Step]の状態にするとVeiricationができる

toyoshitoyoshi

Slackで[Automated with this n8n workflow]というようなフッターが自動で入る。オプションで削除できる。
[Include Link to Workflow]をfalseにすれば良い

toyoshitoyoshi

n8nでNotionノードから取得したデータを動的にドロップダウンの選択肢に設定する方法

目的

n8nのSlackノードなどで使用されるカスタムフォームにおいて、前のノード(ここではNotionノード)から取得した複数のデータを、動的にドロップダウンの選択肢として設定したい。

実際の設定例

以下のJSONをカスタムフォームの定義として使用することで、Notionノードから受け取ったデータを動的にドロップダウンの選択肢として表示できる。

{{
  JSON.stringify([
    {
      "fieldLabel": "選択肢",
      "fieldType": "dropdown",
      "fieldOptions": { 
        "values": $items("Notion").map(item => ({
          "option": item.json.name,
        }))
      },
    "multiselect": true,
      "requiredField": true
    }
  ])
}}
toyoshitoyoshi

Loop over itemsに値を渡すには

return [
	{
		json: {
			url: 'https://medium.com/feed/n8n-io',
		}
	},
	{
		json: {
			url: 'https://dev.to/feed/n8n',
		}
	}
];

のような形式で与える必要がある