> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 排程工作快速入門

> 在 Game Manager 中建立週期性的 PlayFab 排程工作，該工作會使用 cron 運算式叫用 CloudScript，以固定頻率調整遊戲資料。

本快速入門說明如何建立依排程執行的工作。許多遊戲營運例行作業都可以使用排程工作來自動化，例如：

* 依一天中的時段修改商店中的價格。
* 更新遊戲資料以反映目前活動的變更。
* 每天將虛擬貨幣注入遊戲經濟體系等。

在本快速入門使用的範例中，我們將說明如何在 12:00 UTC 修改遊戲資料中名為 **rareDropRate** 的遊戲變數，且僅在週末執行。

## 步驟 1 - 準備 CloudScript

在 **Game Manager** 中：

* 在左側功能表中選取 **Automation**。
* 在 **CloudScript Revisions** 索引標籤上，新增名為 `adjustRareDropRate` 的 CloudScript 函式，其中簡單呼叫 `SetTitleData` API，如下方程式碼片段和影像所示。

<Note>
  眼尖的人請別擔心，這裡面刻意放了一個錯誤。請務必部署新的修訂，使其在您的遊戲中生效。
</Note>

您可以在我們的 [CloudScript 快速入門](/zh-TW/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart)以及 [ExecuteCloudScript](xref:titleid.playfabapi.com.client.server-sidecloudscript.executecloudscript) 方法的文件中，深入了解如何使用 CloudScript。

```javascript theme={null}
handlers.adjustRareDropRate = function(args) {
    // Tutorial demo CloudScript
    serverAPI.SetTitleData({
        "Key": "rareDropRate",
        "Value": args.dropRate
    });
}
```

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-cloudscript-deploy-new-revision.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=db6bc4f364ba1f9b4f28094921c2383c" alt="Game Manager - CloudScript - Deploy new revision" width="1280" height="700" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-cloudscript-deploy-new-revision.png" />

## 步驟 2 - 建立排程工作

現在從左側功能表中選取 **Servers**。

* 前往 **Scheduled Tasks** 索引標籤。
* 選取畫面右上角的 **New Scheduled Task**。
* 這會開啟 **Create Task** 檢視。
* 在 **Type of task** 欄位中，選擇 **Run a CloudScript function**。
* 在其下方，您可以從目前部署的 CloudScript 修訂中挑選函式，並指定要傳入的引數。
* 選擇您在上一個步驟中撰寫的 **adjustRareDropRate Handler**。

若要設定此工作的排程：

* 在 **SCHEDULE** 標題下選取 **On a schedule (UTC)**。
* 簡單的排程建立器可讓您選擇 **Task** 的執行時間 (每小時、每天、每週等)。
* 在此範例中，我們想要進階排程，以便指定在一週中的哪幾天執行工作。
* 因此請選取 **CRON EXPRESSION**。

高度可自訂的 Cron 運算式可讓您建立非常複雜的排程，但請務必注意，我們目前*僅*允許發生時間落在每小時 5 分鐘刻度上的排程。

例如，您可以指定工作在每小時的第 5、10、25 或 50 分鐘執行，但*不能*指定工作在每小時的第 3、11 或 46 分鐘執行。

如果您想深入了解 Cron 運算式，[crontab.guru](https://crontab.guru/) 提供豐富的資訊和互動式運算式建立器。

在此案例中，我們希望工作在每週六和週日的 12:00 UTC 執行，也就是 **00 12 \* \* 0,6** (每個週日和週六的十二點零分)。

最後，在繼續下一個步驟之前，請務必儲存新工作。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-new-scheduled-task.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=e8ee3518088be1728ac184868d985b53" alt="Game Manager - Tasks - New Scheduled Task" width="1046" height="800" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-new-scheduled-task.png" />

## 步驟 3 - 測試工作

在 **Tasks** 檢視 (**Servers** -> **Tasks**) 上，我們可以看到新建立之工作的下一次執行時間是在接下來的*週六*，一如預期。

因此，如果目前是*週二*，則下一次排程的執行時間會在 *4 天後*。若要*立即*測試工作，請選取 **Adjust rare drop rate** 工作並選擇 **RUN TASKS**。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-run-tasks.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=ca99c453fb27cae7ee06c514a64bac32" alt="Game Manager - Tasks - Run Tasks" width="1920" height="600" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-run-tasks.png" />

## 步驟 4 - 檢查測試執行的結果

很遺憾，工作執行失敗了。選取工作執行個體以查看發生了什麼問題。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-failed.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=140bddb5715b4815d89ad9f26bcbaa75" alt="Game Manager - Tasks - Recent Task executions - Fail" width="1870" height="253" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-failed.png" />

**Task Instance Details** 檢視會提供關於工作失敗原因的診斷資訊。

在此案例中，它指出對 **serverAPI.SetTitleData** 的呼叫不正確。*實際上*應該是 **server.SetTitleData** (如需說明，請參閱 [撰寫自訂 CloudScript](/zh-TW/services/playfab/live-service-management/service-gateway/automation/cloudscript/writing-custom-cloudscript#intermediate-calling-the-server-apis) 教學課程中的 **Intermediate: Calling the Server APIs** 一節)。

**Task Instance Details** 檢視上還有其他重要資訊，例如開始和結束時間、呼叫的函式、傳入的任何引數、完整的 CloudScript 執行結果等。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-task-instance-details.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=86e963959cb4c8aed29d5523031d0346" alt="Game Manager - Tasks - Tas Instance Details" width="1120" height="1869" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-task-instance-details.png" />

## 步驟 5 - 再次測試 (成功)

請修正我們在步驟 4 中發現的錯誤。正確的程式碼片段如下所示。

```javascript theme={null}
handlers.adjustRareDropRate = function(args) {
    // Tutorial demo CloudScript
    server.SetTitleData({
        "Key": "rareDropRate",
        "Value": args.dropRate
    });
}
```

現在，重複步驟 3，您最後的測試執行就會成功。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-successful.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=e67ce866e0b36227b39e3c829eea5000" alt="Game Manager - Tasks - Recent Task executions - Successful" width="1686" height="446" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-successful.png" />

若要確認成功：

* 在左側功能表中選取 **Content**。
* 前往 **Title Data** 索引標籤。
* 確認 **Title Data** 項目確實已設定。

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-content-title-data.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=229b4658045991da01edcad22c512fef" alt="Game Manager - Content - Title Data" width="1280" height="800" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-content-title-data.png" />


## Related topics

- [排程工作](/zh-TW/services/playfab/data-analytics/acting-data/scheduled-tasks/index.md)
- [PlayFab 資料與分析文件](/zh-TW/services/playfab/data-analytics/index.md)
- [使用 Azure Functions 的 PlayFab CloudScript 快速入門指南](/zh-TW/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart.md)
- [Unity 快速入門](/zh-TW/services/playfab/sdks/unity3d/quickstart.md)
- [Party 快速入門](/zh-TW/services/playfab/multiplayer/networking/quickstart.md)
