1. コミット前フェーズのスクリプト

アクション スクリプトの例 (コミット前フェーズ)

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

以下に、アセットが作成または変更されたときにコミット前フェーズ (処理中) のトリガーによって実行されるアクション スクリプトの例を示します。 このスクリプトは、ファイル名に特定の拡張子が付いているアセットに対して既定のアセット タイプ (Web) を設定します。

ユース ケース

  1. ユーザーがアセットを作成または変更します。
  2. アセットのファイル名に特定の拡張子が付いている場合、そのアセットの AssetTypeWeb に設定されます。

前提条件

Web は、M.AssetType の既定のタイプではありません。 必要に応じて作成する必要があります。

  • [管理] に移動して [タクソノミー] をクリックします。

  • [M.Asset] を検索します。

    タクソノミー上の M.AssetType

  • M.AssetType タクソノミーに新しいアイテムを追加するため、[+] をクリックします。

    M.AssetType タクソノミーに新しいクラスを追加します。

  • 新しいアイテムのラベルとして「Web」と入力します。

    M.AssetType タクソノミーの新しいクラスとして Web を追加する

  • [保存] をクリックします。

スクリプト

using System.Linq;

var webExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif" };

var entity = Context.Target as IEntity;

// Ensure the following members are loaded
await entity.LoadMembersAsync(new PropertyLoadOption("FileName"), new RelationLoadOption("AssetTypeToAsset"));

var filename = entity.GetPropertyValue<string>("FileName");
if (string.IsNullOrEmpty(filename)) return; // No filename, nothing to do.

var extension = GetExtension(filename)?.ToLowerInvariant();

if (string.IsNullOrEmpty(extension)) return;
if (!webExtensions.Contains(extension)) return;

var query = Query.CreateQuery(entities =>
    from e in entities
    where e.Identifier == "M.AssetType.Web"
    select e);

var webTypeId = await MClient.Querying.SingleIdAsync(query);
if (!webTypeId.HasValue) return;

var relation = entity.GetRelation<IChildToOneParentRelation>("AssetTypeToAsset");
if (relation == null) return;

relation.Parent = webTypeId;



string GetExtension(string path)
{
    var tokens = path.Split('.');
    if (tokens.Length > 1)
    {
        return "." + tokens[tokens.Length - 1];
    }
    return null;
}

スクリプトの説明

  1. スクリプトで使用するライブラリをインクルードします。
この記事を改善するための提案がある場合は、 お知らせください!