コンテンツにスキップ

スクリプトを書く

スクリプトノードは、フローの処理を TypeScript で記述するノードです。コードはランナー上の Deno で実行されます。

スクリプトノードを選ぶと、右側にエディタが開きます。上部に 標準ライブラリ / 外部パッケージ / ファンクション / 環境変数 / 認証情報 のインポート欄、その下にコードエディタ、さらに セキュリティフラグ の設定があります。

スクリプトノードの編集画面

スクリプトは、Parameter を受け取り Result を返す関数を default export します。

import { Parameter, Result } from "./nodeType.ts";
export default async function (parameter: Parameter): Promise<Result> {
// ここに処理を書く
return {
// 次のノードに渡す値
};
}
  • Parameter — このノードへの入力です。
  • Result — このノードの出力です。

フローは複数のノードを順に実行します。あるノードが return した Result が、次のノードの Parameter になります。 フローの最初のノードの Parameter には、トリガーの出力(HTTPリクエストの内容やフォームの入力など)が渡されます。

トリガー → ノードA → ノードB → 終了
(Result) ↑
Parameter

各ノードの「型」エディタで Result の項目を定義すると、./nodeType.tsParameter / Result 型が自動生成され、エディタ上で型補完が効きます。型は GUI と JSON のどちらでも定義できます。

環境変数・認証情報・ファンクションを使う

Section titled “環境変数・認証情報・ファンクションを使う”

スクリプトからは、synqlet: で始まる特別なモジュールを import して、Synqlet のリソースを利用できます。これらは エディタ上部(または右の「ライブラリ」パネル)の「+」から追加 すると、import 文が自動で挿入されます(ID を手入力する必要はありません)。

import API_BASE_URL from "synqlet:environment-variables/{環境変数のID}";
// API_BASE_URL に環境変数の値が入る

環境変数

import credential from "synqlet:credentials/{認証情報のID}";
const accessToken = await credential();
// await credential() に復号済みの認証情報(アクセストークンなど)が入る

認証情報(認証情報を扱うにはランナー側で秘密鍵ファイルが必要です)

ファンクション(共通ロジックの再利用)

Section titled “ファンクション(共通ロジックの再利用)”
import formatData from "synqlet:functions/{ファンクションのID}";
const result = await formatData(/* ... */);

ファンクション

HTTPリクエストトリガーへの応答

Section titled “HTTPリクエストトリガーへの応答”

HTTPリクエストトリガーで「レスポンスをカスタマイズする」を有効にした場合、sendResponse で応答を返せます。

import { sendResponse } from "synqlet:http-request-trigger";
sendResponse(new Response("OK", { status: 200 }));

標準ライブラリ・外部パッケージ

Section titled “標準ライブラリ・外部パッケージ”
  • 標準ライブラリDeno Namespace APIsDeno.*)と Web Platform APIsfetch など)が使えます。
  • 外部パッケージ — npm / jsr のパッケージを import できます。「外部パッケージ」の「+」から追加します。
import { z } from "npm:zod";
import { delay } from "jsr:@std/async";

スクリプトは Deno 上で実行され、既定ではすべての権限が「すべて拒否」 になっています。必要な操作だけを明示的に許可することで、安全に実行できます。

セキュリティフラグ(Deno 権限)の設定

設定できる権限は次のとおりです(それぞれ「許可」と「拒否」を指定でき、拒否が許可より優先 されます)。

権限内容
ファイルの読み取りファイルシステムの読み取り
ファイルの書き込みファイルシステムの書き込み
ネットワークアクセス外部への通信(fetch など)
環境変数OS の環境変数へのアクセス
システム情報システム情報の取得
サブプロセス外部コマンドの実行
FFI外部ライブラリの呼び出し

スクリプト内の console.log / console.error などの出力は、実行時の ジョブのログ に記録されます。処理の途中経過の確認やデバッグに使えます。

console.log("処理を開始します", parameter);

実行後、ジョブ(フロージョブ / ランナージョブ)の詳細からログを確認できます。

スクリプトノードには 最大試行回数 を設定できます。処理が失敗したときに、設定した回数まで自動で再試行します。一時的な外部エラーに備えたいときに利用します。

テストスクリプトで動作確認する

Section titled “テストスクリプトで動作確認する”

公開する前に、フローエディタの「テストスクリプト」タブから動作を確認できます。実行するランナーを選び、テスト用のスクリプトを実行して、結果やログを確認します。問題がなければリビジョンを作成して公開します。