> ## 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 中创建一个使用 cron 表达式调用 CloudScript 的定期 PlayFab 计划任务，以固定的节奏调整 title data。

本快速入门向你展示如何创建按计划运行的任务。有许多游戏操作例程可以使用计划任务自动完成，例如：

* 根据一天中的时间修改商店中的价格。
* 更新 title data 以反映当前事件的更改。
* 每天向游戏经济中注入虚拟货币等。

在本快速入门中使用的示例中，我们将向你展示如何在 UTC 12:00 且仅在周末修改 title data 中一个名为 **rareDropRate** 的游戏变量。

## 步骤 1 - 准备 CloudScript

在 **Game Manager** 中：

* 在左侧菜单中选择 **Automation**。
* 在 **CloudScript Revisions** 选项卡上，添加一个名为 `adjustRareDropRate` 的新 CloudScript 函数，其中包含对 `SetTitleData` API 的简单调用，如下面的代码片段和图像所示。

<Note>
  眼尖的人别担心 - 那里故意有一个错误。确保你部署新版本，以便它在你的游戏中处于活动状态。
</Note>

你可以在我们的 [CloudScript 快速入门](/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/) 提供了丰富的信息和一个交互式表达式构建器。

在这种情况下，我们希望任务在 UTC 12:00 的星期六和星期日运行，即 **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](/services/playfab/live-service-management/service-gateway/automation/cloudscript/writing-custom-cloudscript#intermediate-calling-the-server-apis) 教程的 **中级：调用服务器 API** 部分）。

**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-CN/services/playfab/data-analytics/acting-data/scheduled-tasks/index.md)
- [PlayFab 数据与分析文档](/zh-CN/services/playfab/data-analytics/index.md)
- [使用 Azure Functions 的 PlayFab CloudScript 快速入门指南](/zh-CN/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart.md)
- [Unity 快速入门](/zh-CN/services/playfab/sdks/unity3d/quickstart.md)
- [Android 快速入门](/zh-CN/services/playfab/sdks/c/quickstart-android.md)
