Skip to content

Latest commit

 

History

History
267 lines (180 loc) · 9.25 KB

IntegrationWithGoogleSheet_jp.md

File metadata and controls

267 lines (180 loc) · 9.25 KB

Google Sheetに必要なもの

設定がまだの方は初期設定から完了させてください。

2つのタイプを用意

用途に合わせて使ってください。

  • Simple - Key + 言語別のテキストのみのシンプルなもの
  • Custom - カスタムできる汎用性の高いもの

Simple

スプレッドシートの構成を変更できませんが、スクリプトの生成無しにすぐ使う事ができます。

スプレッドシートの生成

CuvImporterを生成

Project上を右クリックし「CMSuniVortex > create CuvImporter」からCuvImporterを生成します。

ClientにCMSuniVortex.GoogleSheet.GoogleSheetCuvClientを選択

CuvImporterに必要情報の入力

explanation e.g.
Build Path アセットを生成するパス Assets/Generated/
Languages 言語を指定、利用していなくても必ず1つ選択する必要があります。 English
Sheet Url スプレッドシートのURLを指定 https://docs.google.com/spreadsheets/d/sheetID/
Sheet Names スプレッドシートの下段タブ名 Animals, SeaCreatures
Json Key Path サービスアカウントを保存したパス Assets/GoogleSheetTest/light-operator-x-x-x.json

Import

入力後、「Import」をクリックしてください。エラー無く出力されていれば完了です。

Output

どうやって参照するかを指定します。今回は直接参照のGoogleSheetCuvOutputを指定しました。

取得と表示

一番簡単な方法はCuvComponentを使う事です。下記のコードをTestText.csとして保存しAssets配下に配置、Textにアタッチして必要情報を入力してください。

using CMSuniVortex.Compornents;
using CMSuniVortex.GoogleSheet;
using UnityEngine;
using UnityEngine.UI;

public sealed class TestText : CuvComponent<GoogleSheetCuvReference>
{
    [SerializeField] Text _text;
        
    protected override void OnChangeLanguage(GoogleSheetCuvReference reference, string key)
    {
        if (reference.GetList().TryGetByKey(key, out var model))
        {
            _text.text = model.Text;
        }
    }
}

Custom

スプレッドシートの1番目のKey以外は自由に変更できます。スクリプトの生成が必要です。

スプレッドシートの生成

CuvImporterを生成

Project上を右クリックし「CMSuniVortex > create CuvImporter」からCuvImporterを生成します。

生成したCuvImporterの「Script Generator」ボタンをクリック

スクリプト生成

必要情報を入力して生成してください。

explanation e.g.
Full Class Name クラス名を指定。namespaceを指定する事も可能です。 namespace.ClassName
Build Path コードを生成するディレクトリのパスを指定 Assets/Models/

CuvImporterに必要情報の入力

生成したClientを選択します。

情報を入力します。

explanation e.g.
Build Path アセットを生成するパス Assets/Generated/
Languages 言語を指定、利用していなくても必ず1つ選択する必要があります。 English
Sheet Url スプレッドシートのURLを指定 https://docs.google.com/spreadsheets/d/sheetID/
Json Key Path サービスアカウントを保存したパス Assets/GoogleSheetTest/light-operator-x-x-x.json

Import

「Import」ボタンをクリックしてインポートします。インポート後、エラー無く出力されていれば成功です。

Output

どうやって参照するかを指定します。今回は直接参照のCustomGoogleSheetCuvOutputを指定しました。「Output」をクリックして出力します。

取得と表示

Simpleを参照してください。

必ずKeyを設定する

シートは1番目のKeyだけは必ず設定してください。またそのキーは重複しないように注意してください。

カスタム方法

シートの'Text'列はモデルのText = GetString("Text");で取得できます。

public sealed class Meta : CustomGoogleSheetModel
{
    public ElementType Element;
    public string Text; // <--
    public bool Boolean;
    public int Number;
    public Sprite Image;
    public string Date;
    
    public enum ElementType { Title, Narration, Character1, Character2, Character3, TextOnly }

    protected override void OnDeserialize()
    {
        Element = GetEnum<ElementType>("Element");
        Text = GetString("Text"); // <--
        Boolean = GetBool("Boolean");
        Number = GetInt("Number");
        Date = GetDate("Date");
        
        LoadSprite("Image", sprite => Image = sprite);
    }
}

Addressable対応のCuvClientを選択した場合、AssetReferenceを使えます。

using System;
using CMSuniVortex.GoogleSheet;
using UnityEngine.AddressableAssets;

[Serializable]
public sealed class MetaAddressable : CustomGoogleSheetModel
{
    public AssetReferenceSprite Sprite;
    public AssetReferenceTexture2D Texture;

    protected override void OnDeserialize()
    {
        LoadSpriteReference("Image", asset => Sprite = asset);
        LoadTextureReference("Image2", asset => Texture = asset);
    }
}

追加

追加方法を説明します。まずEnglishのシートにFloatを追加してみたいと思います。

Japaneseは、翻訳が必要なところ以外はEnglishのシートをインポートすると楽です。EnglishのE〜JのセルをIMPORTRANGE関数で表示しています。

// Sheet url, Sheet name + cells
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/13XEuxW89jT4ICb2guBcgcgPrCmY_oGxDQgiWNOth7ww/", "English!E:J")

Floatを生成したモデルに追加し、デシリアライズ処理を追加します。

public sealed class Meta : CustomGoogleSheetModel
{
    public ElementType Element;
    public string Text;
    public bool Boolean;
    public int Number;
    public Sprite Image;
    public string Date;
    public float Float; // <--
    
    public enum ElementType { Title, Narration, Character1, Character2, Character3, TextOnly }

    protected override void OnDeserialize()
    {
        Element = GetEnum<ElementType>("Element");
        Text = GetString("Text");
        Boolean = GetBool("Boolean");
        Number = GetInt("Number");
        Date = GetDate("Date");
        Float = GetFloat("Float"); // <--
        
        LoadSprite("Image", sprite => Image = sprite);
    }
}

追加後、インポートします。

エラー無く、下記のように追加されていれば完了です。 この要領で削除したり追加したりして自分のオリジナルのシートを作ってみてください。

Google API ライブラリ

データ取得に、オフィシャルのライブラリを利用しています。

https://www.nuget.org/profiles/google-apis-packages

  • Google.Apis
  • Google.Apis.Core
  • Google.Apis.Auth
  • Google.Apis.Drive.v3
  • Google.Apis.Sheets.v4