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

# CloudScript を介した読み取り専用または内部プレイヤーデータの変更

> server.UpdateUserInternalData を使用して、C# および JavaScript のサンプルコードを含む CloudScript から、読み取り専用および内部の PlayFab プレイヤーデータを安全に更新します。

タイトルで必要な場合、プレイヤーデータは CloudScript からアクセスできます。

CloudScript の使用の詳細については、[CloudScript クイックスタート](/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart) を参照してください。

このトピックの C# サンプルは Unity SDK 用に書かれています。Unity SDK は、非同期タスクを処理するためにイベントドリブンモデルを使用します。C# SDK を使用してサンプルコードを実行するには、非同期タスクモデルを使用するようにコードを変更する必要があります。変更が必要なメソッドは、シグネチャ内のメソッド名に Async が追加されています。たとえば、Unity SDK の SetObject は C# SDK では SetObjectAsync になります。詳細については、[Asynchronous programming with async and await](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/) を参照してください。

## CloudScript コード例

CloudScript でのサーバー API 呼び出しのセキュリティを確保するために注意する必要があります。次のコードは、CloudScript から読み取り専用プレイヤーデータの一部を安全に変更する方法を示しています。

```javascript theme={null}
function IncrementReadOnlyUserData(args) {
  var playerData = server.GetUserInternalData({
        PlayFabId: currentPlayerId,
        Keys: ["ReadOnlyTest"]
  });

  var prevCount = "0";
  var nextCount = "1";
  try {
    prevCount = playerData.Data["ReadOnlyTest"].Value;
    var prevInt = parseInt(prevCount, 10);
    if (prevInt != prevInt) {
      prevInt = 0;
      nextCount = (prevInt + 1).toString();
    }
  } catch (e) {
    prevCount = "0";
    nextCount = "0";
  }

  var updateUserDataResult = server.UpdateUserInternalData({
    PlayFabId: currentPlayerId,
    Data:
        {
          "ReadOnlyTest": nextCount
        }
  });
}
```

## C# コード例

CloudScript クイックスタートで説明したように、クライアントから次のロジックを呼び出すことができます。

```csharp theme={null}
public void CloudIncrement() {
    PlayFabClientAPI.ExecuteCloudScript( new ExecuteCloudScriptRequest {
        FunctionName = "IncrementReadOnlyUserData"
    },
    result => Debug.Log("CloudScript call successful"),
    error => {
        Debug.Log("CloudScript call failed");
        Debug.Log(error.GenerateErrorReport());
    });
}
```


## Related topics

- [プレイヤーデータのクイックスタート](/ja-jp/services/playfab/player-progression/player-data/quickstart.md)
- [読み取り専用プレイヤーデータの取得方法](/ja-jp/services/playfab/player-progression/player-data/how-to-get-read-only-player-data.md)
- [読み取り専用プレイヤーデータの設定方法](/ja-jp/services/playfab/player-progression/player-data/how-to-set-read-only-player-data.md)
- [内部プレイヤーデータの設定方法](/ja-jp/services/playfab/player-progression/player-data/how-to-set-internal-player-data.md)
- [プレイヤー データ](/ja-jp/services/playfab/player-progression/player-data/index.md)
