コンテンツにスキップ

スケジュール実行する

このユースケースでできること

Section titled “このユースケースでできること”

cron式でCraft Functionsを定期実行し、外部APIからデータを取得して Craft KVS に保存できます。バッチ同期や定期レポートの土台になるパターンです。

  • 外部データの定期同期
    • APIやDatahubの結果を一定間隔で取得し、KVSやスプレッドシートへ反映する
  • 定期レポート・通知の自動化
    • 毎日・毎週の集計や分析結果を、SlackやTeamsへ自動送信する
  • データの鮮度を保つバッチ処理
    • 在庫・ランキング・友だちリストなど、常に最新状態を維持したいデータを定期更新する

ユーザーの操作をきっかけに外部APIを呼び出す場合は 外部 API と連携する を、KARTEの接客をトリガーに処理する場合は KARTE の接客から処理を実行する を参照してください。

イベント駆動タイプのファンクションとしてデプロイします。API_URL は実際の取得先に書き換えてください。

const API_URL = "https://api.example.com/data";
const KVS_KEY = "api-sync:latest";
export default async function (data, { MODULES }) {
const { initLogger, kvs } = MODULES;
const logger = initLogger({ logLevel: "INFO" });
logger.info("Scheduled execution started", {
triggeredAt: new Date().toISOString(),
});
const response = await fetch(API_URL);
if (!response.ok) {
logger.error("API request failed", { status: response.status });
throw new Error(`API request failed: ${response.status}`);
}
const body = await response.json();
await kvs.write({
key: KVS_KEY,
value: { data: body, syncedAt: new Date().toISOString() },
});
logger.info("Data saved to KVS", { key: KVS_KEY });
return { status: "completed" };
}
  • スケジュール実行はイベント駆動タイプでのみ利用できます
  • 同じ処理が重複実行されても問題ないよう、べき等に設計してください
  • 長時間かかる処理や再試行が必要な場合は RetryableError の利用を検討してください