翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コード
Quick Automate のコードアクションを使用すると、Python コードブロックを使用してカスタムロジックを実装でき、標準のオートメーションアクションがサポートする範囲を超えます。複雑なデータ変換や計算に適しており、セキュリティを維持するために制限された Python 環境内で実行されます。
2 種類のコードアクション:
単一行式: 値を返さずに変数を変更する 1 行の高速オペレーション
カスタムコードブロック: パラメータと戻り値を含む複雑なロジックの複数行 Python 関数
コードアクションを使用するタイミング:
次の必要がある場合は、コードブロックを使用します。
標準アクションでは利用できない複雑なデータ変換を実行する
カスタムビジネスロジックまたは計算を実装する
データ構造 (リスト、ディクショナリ、JSON) を処理または操作する
日付、時刻、タイムゾーンをカスタムで操作する
複雑なパターンを持つ文字列を解析またはフォーマットする
複数のアクションを 1 つのコードブロックに統合して自動化パフォーマンスを最適化する
コードアクションを使用しない場合:
次の場合、コードブロックは避けてください。
ユースケースの標準オートメーションアクションが既に存在します
オペレーションは、組み込みアクションに十分シンプルです。
外部 APIs とやり取りする必要があります (代わりに REST API 統合を使用)
ファイルシステムまたはデータベースにアクセスする必要がある (適切な統合を使用)
コードアクションにアクセスする方法:
コードブロックは、複数のインターフェイスを介して使用できます。
アクションパネル (推奨):
Automation Builder でオートメーションを開く
右側のアクションパネルをクリックします。
コードアクションセクションで「カスタムコードブロック」を見つけます。
コードブロックをオートメーションワークフローにドラッグアンドドロップする
Assistant でビルドする:
アシスタントがカスタムコードが必要と判断した場合に、プラン生成時に使用可能
アシスタントが複雑なオペレーションのコードブロックを自動的に提案する
カスタムロジックのニーズを記述することで、コードブロックをリクエストできます。
利用可能なアクション:
単一行式
単一行式は、値を返さずにオペレーションを実行する 1 行の Python ステートメントを実行します。リストへの追加、ディクショナリの更新、状態を変更する簡単な計算の実行など、既存の変数への迅速な変更に最適です。
プロパティ:
式 (必須): 実行する Python 式 (例: "my_list.append('new item')")
例:
リストに追加
my_list.append("1") my_list.append(new_item)リスト項目の削除
task_list.remove(completed_task)
カスタムコードブロック
カスタムコードブロックは、複雑なロジックを実行し、パラメータを受け入れ、値を返す複数行の Python 関数です。これらは、標準オートメーションアクションと単一行式がニーズに十分でない場合のフォールバックオプションです。
プロパティ:
関数タイトル (必須): コードブロックの名前識別子 (「Calculate_Total」など)
関数 (必須): カスタムロジックを含む Python コードブロック。
ステップ 1: パラメータを定義する
「編集」ボタンをクリックしてコードエディタを開きます。
パラメータパネルで、「追加」をクリックして新しいパラメータを作成します。
自動化変数に一致するパラメータ名を入力する
パラメータは関数引数として使用できます
ステップ 2: Python コードを記述する
戻り値 (オプション): 関数の出力を保存する変数名
必要なコードブロック構造に従う (以下を参照)
関数内にカスタムロジックを実装する
承認されたライブラリと組み込み関数のみを使用する
データを出力する必要がある場合は、戻りステートメントを含める
コードブロック構造
すべてのコードブロックは次の特定の形式に従う必要があります。
@code_block() def your_function_name(parameter1, parameter2, parameter3): ------------------------------------------------------------------------------------- """ Optional: Add a docstring describing what your function does """ # Your custom logic here result = parameter1 + parameter2 + parameter3 return result
組み込み Python 関数とインポート
すべての標準 Python 組み込み関数はインポートなしで使用できます (len、str、int など)
承認された標準ライブラリ (セキュリティ制限付き)
コードブロックは、次の標準ライブラリのみをインポートできます。
base64- Base64 エンコード/デコードdatetime- 日付と時刻のオペレーションjson- JSON 解析と生成math- 数学関数re- 正規表現zoneinfo- タイムゾーン処理
注記
上記のライブラリ以外の標準ライブラリをインポートすることはできません。
サードパーティーライブラリをインストールまたはインポートすることはできません。
pip installはコードブロックではサポートされていません。
制限事項
ライブラリへのアクセスが制限された制限された Python 環境。実行環境は、Python 3.10 のサブセットである RestrictedPython に基づいています。
コードブロックは他のコードブロックやアクションを呼び出すことができません
ベストプラクティス
コードブロックをシンプルかつ集中的に維持する
わかりやすい関数名を使用する
利用可能な場合は、常に構築済みのアクションを優先する
焦点を絞ったデバッグオプションが制限されているため、コードブロックを徹底的にテストする)
ユースケースの例
数学演算 (円プロパティの計算 - パラメータとしての半径
def function (radius): return { "radius": radius, "diameter": 2 * radius, "circumference": round(2 * math.pi * radius, 2), "area": round(math.pi * radius ** 2, 2) }現在の日付/時刻の取得
def function (): now = datetime.datetime.now() return { "current_date": now.strftime("%Y-%m-%d"), "current_time": now.strftime("%H:%M:%S"), "formatted": now.strftime("%B %d, %Y at %I:%M %p"), "iso_format": now.isoformat(), "timestamp": now.timestamp() }日付の差の計算 - パラメータとしての開始日と終了日
def function _(start_date_str, end_date_str): # Parse date strings (format: YYYY-MM-DD)_ start = datetime.datetime.strptime(start_date_str, "%Y-%m-%d") end = datetime.datetime.strptime(end_date_str, "%Y-%m-%d") _# Calculate difference_ difference = end - start return { "days": difference.days, "weeks": difference.days // 7, "start": start_date_str, "end": end_date_str }正規表現を使用したパターンマッチングとテキスト操作 (E メールアドレス、電話番号の検証など)
def function (email, phone, zip_code): email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' phone_pattern = r'^\d{3}-\d{3}-\d{4}$' zip_pattern = r'^\d{5}(-\d{4})?$' return { "email_valid": bool(re.match(email_pattern, email)), "phone_valid": bool(re.match(phone_pattern, phone)), "zip_valid": bool(re.match(zip_pattern, zip_code)) }リストオペレーション (フィルターと変換リスト)
def function (numbers, threshold): # Filter numbers above threshold and calculate statistics filtered = [n for n in numbers if n > threshold] if filtered: return { "filtered_numbers": filtered, "count": len(filtered), "sum": sum(filtered), "average": sum(filtered) / len(filtered), "min": min(filtered), "max": max(filtered) } else: return { "filtered_numbers": [], "count": 0, "message": "No numbers above threshold" }