> ## 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.

# Scheduled tasks quickstart

> Create a recurring PlayFab scheduled task in Game Manager that invokes CloudScript with a cron expression to adjust title data on a fixed cadence.

이 빠른 시작에서는 일정에 따라 실행되는 태스크를 만드는 방법을 보여줍니다. 예약된 태스크를 사용하여 자동화할 수 있는 게임 운영 루틴이 많이 있습니다. 예를 들면 다음과 같습니다.

* 시간대에 따라 상점의 가격 수정.
* 현재 이벤트의 변경 사항을 반영하도록 타이틀 데이터 업데이트.
* 매일 게임 경제에 가상 화폐 주입 등.

이 빠른 시작에서 사용하는 예시는 12:00 UTC에 주말에만 타이틀 데이터의 **rareDropRate**라는 게임 변수를 수정하는 방법을 보여줍니다.

## 1단계 - CloudScript 준비

**Game Manager**에서:

* 왼쪽 메뉴에서 **Automation**을 선택합니다.
* **CloudScript Revisions** 탭에서 아래의 코드 조각 및 이미지에서 볼 수 있듯이 `SetTitleData` API를 간단하게 호출하는 `adjustRareDropRate`라는 새 CloudScript 함수를 추가합니다.

<Note>
  눈치 빠른 분들을 위해 안심하세요 - 의도적으로 버그가 있습니다. 게임에서 라이브가 되도록 새 리비전을 배포해야 합니다.
</Note>

CloudScript 사용에 대한 자세한 내용은 [CloudScript 빠른 시작](/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart)과 [ExecuteCloudScript](xref:titleid.playfabapi.com.client.server-sidecloudscript.executecloudscript) 메서드 설명서에서 확인할 수 있습니다.

```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 Expression을 사용하면 매우 복잡한 일정을 만들 수 있지만, 현재는 발생 시간이 시간의 5분 단위에 해당하는 일정*만* 허용된다는 점을 유의해야 합니다.

예를 들어, 시간의 5분, 10분, 25분, 50분에 실행되는 태스크는 지정할 수 있지만, 3분, 11분, 46분에 실행되는 태스크는 지정할 수 *없습니다*.

Cron Expression에 대해 자세히 알고 싶다면 [crontab.guru](https://crontab.guru/)에서 풍부한 정보와 대화형 표현식 빌더를 제공합니다.

이 경우 태스크가 토요일과 일요일 12:00 UTC에 실행되기를 원하며, 이는 **00 12 \* \* 0,6**입니다(12시 정각, 매주 일요일과 토요일).

마지막으로 다음 단계로 이동하기 전에 새 태스크를 저장해야 합니다.

<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**여야 합니다(자세한 내용은 [Writing Custom CloudScript](/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

- [예약된 작업](/ko/services/playfab/data-analytics/acting-data/scheduled-tasks/index.md)
- [title_scheduled_function_executed](/ko/services/playfab/api-references/events/Functions/title-scheduled-function-executed.md)
- [title_started_task](/ko/services/playfab/api-references/events/Extension/title-started-task.md)
- [title_scheduled_cloudscript_executed](/ko/services/playfab/api-references/events/CloudScript/title-scheduled-cloudscript-executed.md)
- [title_created_task](/ko/services/playfab/api-references/events/Extension/title-created-task.md)
