リボン定義のエクスポート
既定の RibbonXml に対する変更を効率的に定義するには、リボンを定義する RibbonXml データを参照できる必要があります。
組織のリボン定義へのアクセス
組織のリボンが変更されたときに、カスタマイズされたリボン要素を扱う予定がある場合には現在の定義をエクスポートする必要があります。 エクスポートには、リボンの xml をエクスポートするのサンプルを使用します。
既定のリボン データへのアクセス
モデル駆動型アプリの既定のリボン定義は、Microsoft ダウンロード: ExportedRibbonXml.zip からダウンロードできます。
applicationRibbon.xml ファイルには、コア アプリケーション リボンの定義が含まれています。
残りのファイルには、テーブル テンプレートとは異なるリボン定義を持つテーブルによって使用される定義が含まれます。 各ファイルの名前は、テーブルの名前に従って付けられています (論理テーブル名 + Ribbon.xml)。
これらのファイルは、サンプル: リボン定義のエクスポート を使用する次の 2 つのメッセージの出力を表します:
RetrieveApplicationRibbonRequest
このメッセージは、テーブル テンプレートを含むコア アプリケーション リボンを取得します。
RetrieveEntityRibbonRequest
このメッセージは、特定のテーブルで使用されるリボン定義を取得します。
リボン データを解凍する
リボン データは、圧縮ファイルとしてエクスポートされます。 このファイルを XML に解凍するには、System.IO.Packaging.ZipPackage クラスを使用する必要があります。 次の例は、SDK サンプルの中でファイルを解凍するために使用されるヘルパー メソッドです。
/// <summary>
/// A helper method that decompresses the Ribbon data returned
/// </summary>
/// <param name="data">The compressed ribbon data</param>
/// <returns></returns>
public byte[] unzipRibbon(byte[] data)
{
System.IO.Packaging.ZipPackage package = null;
MemoryStream memStream = null;
memStream = new MemoryStream();
memStream.Write(data, 0, data.Length);
package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open);
ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/RibbonXml.xml", UriKind.Relative));
using (Stream strm = part.GetStream())
{
long len = strm.Length;
byte[] buff = new byte[len];
strm.Read(buff, 0, (int)len);
return buff;
}
}
アプリケーション リボン データを取得する
アプリケーション リボンは、次の例に示すように、RetrieveApplicationRibbonRequest を使用して取得できます。
//Retrieve the Application Ribbon
var appribReq = new RetrieveApplicationRibbonRequest();
var appribResp = (RetrieveApplicationRibbonResponse)service.Execute(appribReq);
System.String applicationRibbonPath = Path.GetFullPath(exportFolder + "\\applicationRibbon.xml");
File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml));
テーブルのリボンを取得する
テーブルのリボン定義を取得するには、RetrieveEntityRibbonRequest のパラメーターとしてテーブルの名前を指定するだけです。
リボンをサポートするすべてのテーブルのリボン定義を取得するには、テーブルのリボン テンプレートとは異なるリボン定義を持つシステム テーブルの一覧が必要です。 以下のサンプルは、リボン定義を持つすべてのシステム テーブルの配列を示します。
//This array contains all of the system tables that use the ribbon.
public System.String[] entitiesWithRibbons = {"account",
"activitymimeattachment",
"activitypointer",
"appointment",
"bulkoperation",
"calendar",
"campaign",
"campaignactivity",
"campaignresponse",
"competitor",
"connection",
"contact",
"contract",
"contractdetail",
"convertrule",
"convertruleitem",
"customeraddress",
"discount",
"discounttype",
"email",
"emailserverprofile",
"entitlement",
"entitlementchannel",
"entitlementtemplate",
"entitlementtemplatechannel",
"fax",
"goal",
"goalrollupquery",
"importfile",
"incident",
"invoice",
"invoicedetail",
"kbarticle",
"kbarticlecomment",
"lead",
"letter",
"list",
"listmember",
"mailbox",
"metric",
"opportunity",
"opportunityproduct",
"partnerapplication",
"phonecall",
"postfollow",
"pricelevel",
"product",
"productpricelevel",
"queue",
"queueitem",
"quote",
"quotedetail",
"recurringappointmentmaster",
"report",
"rollupfield",
"routingrule",
"routingruleitem",
"salesliterature",
"salesliteratureitem",
"salesorder",
"salesorderdetail",
"service",
"serviceappointment",
"sharepointdocument",
"sharepointdocumentlocation",
"sharepointsite",
"site",
"sla",
"slaitem",
"socialactivity",
"socialprofile",
"systemuser",
"task",
"team",
"teamtemplate",
"territory",
"uom",
"uomschedule",
"userquery"};
以下のサンプルは、一連のテーブルのリボン定義の取得方法を示します。
//Retrieve system table Ribbons
var entRibReq = new RetrieveEntityRibbonRequest() { RibbonLocationFilter = RibbonLocationFilters.All };
foreach (System.String entityName in entitiesWithRibbons)
{
entRibReq.EntityName = entityName;
var entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);
System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + entityName + "Ribbon.xml");
File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
//Write the path where the file has been saved.
Console.WriteLine(entityRibbonPath);
}
ユーザー定義テーブルも、リボンのカスタマイズをサポートします。 ユーザー定義テーブルの一覧を取得するには、RetrieveAllEntitiesRequest を使用してユーザー定義テーブルの名前を取得します。 以下のサンプルは、すべてのユーザー定義テーブルのリボン定義の取得方法を示します。
//Check for custom tables
var raer = new RetrieveAllEntitiesRequest() { EntityFilters = EntityFilters.Entity };
var resp = (RetrieveAllEntitiesResponse)service.Execute(raer);
foreach (EntityMetadata em in resp.EntityMetadata)
{
if (em.IsCustomEntity == true && em.IsIntersect == false)
{
entRibReq.EntityName = em.LogicalName;
var entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);
System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + em.LogicalName + "Ribbon.xml");
File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
//Write the path where the file has been saved.
Console.WriteLine(entityRibbonPath);
}
}
リボンの問題のトラブルシューティング
リボン コマンド バー ボタンで問題が発生している場合は、次のトラブルシューティング ガイドを使用して問題を見つけ解決してください。
関連項目
リボンのカスタマイズ
バーまたはリボンの表示
リボンのエクスポート、編集の準備、およびインポート
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。