オーサリング操作のクエリ例

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

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

以下のGraphQLタイプに対してクエリやミューテーションを用いてオーサリング操作を行うことができます:

  • アイテム
  • メディア
  • Search
  • 遺跡
  • テンプレート

利用可能な種類や操作の完全なリストについては、GraphQL IDEの組み込みドキュメントを参照してください。

Search criteria

以下のセクションでは、クエリに適用できる検索条件について説明します。

正確な

検索基準はクエリ語の正確な一致です。例えば、「apple」と検索すると、正確な値が「apple」である結果のみが返ってきます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_group", "value": "227473f1dc3f4d3a8558865f49b4f64f", "criteriaType": "EXACT" }

} } }

StartsWith

指定された検索基準で始まるフィールド値を返します。例えば、「app」で検索すると「apple」と「application」の両方が返されます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_group", "value": "227473f1dc3f4d3a8558", "criteriaType": "STARTSWITH" }

} } }

{ .notintoc } を含みます

指定された検索基準を含むフィールド値を返します。例えば、「app」で検索すると「apple」「application」「happen」が返されます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_group", "value": "c3f4d3a8558", "criteriaType": "CONTAINS" }

} } }

EndsWith

指定された検索基準で終わるフィールド値を返します。例えば、「ple」を検索すると「apple」と「maple」の両方が返されます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_group", "value": "65f49b4f64f", "criteriaType": "ENDSWITH" }

} } }

ワイルドカード

検索基準にワイルドカードを含めます。例えば、「a*e」で検索すると「apple」と「angle」の両方が返されます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_group", "value": "227*f64f", "criteriaType": "WILDCARD" }

} } }

値内の全文フレーズを検索します。例えば、「apple pie」で検索すると、「We made apple pie」の値が返ってきます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_name", "value": "Unlock", "criteriaType": "SEARCH" }

} } }

レンジ

数値および日付フィールドの値の範囲を検索します。例えば、1から5までの任意の値を検索できます。この基準を適用する際には、括弧内にクエリ範囲を定義する文字列であるvalueも入力してください。 valueを入力する際には、以下の点に注意してください。

  • 括弧の種類によって範囲が包括的か排他的かが決まります。正角括弧は包含範囲を示し、丸括弧は排他的範囲を示します。例えば、1つのクエリで括弧タイプを混ぜることができます。例えば、値が 10 TO 20)なら10は含み、20は除外します。
  • 文字列 TO で最小値と最も高い値を分けます(大文字を区別)。
  • 制限のない値(上限も制限もない)を示すにはアスタリスク*を付けます。例えば、値が (10 TO *)の場合、10は除外され、上限はありません。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "__boost", "value": "1 TO 5", "criteriaType": "RANGE" }

} } }

Fuzzy

検索語に似たマッチを見つけるために使われ、誤字や綴りの違いなどの細かな違いを許容します。類似度parameters (0と1の間の値)を用いて、マッチングが検索語にどれだけ近いかを判断します。値が高いほど、より厳密なマッチングが行われます。例えば、類似度パラメータが0.8の「example」を検索すると「exampel」や「exmple」が一致することがあります。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_name", "value": "secuty", "criteriaType": "FUZZY", "parameters": "0.5" }

} } }

Proximity

検索語が他の単語で区切られている可能性のある文書を見つけるために使われます。分離語の数はparametersで示されます。例えば、「apple pie」を近接パラメータ5で検索すると「apple is not a pie」が返ってきます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_name", "value": "collection", "criteriaType": "PROXIMITY", "parameters": "0" }

} } }

RegEx

正則表現(RegEx)を適用する検索語。例えば、「a.*e$」で検索すると「apple」と「angle」が返ってきます。

{ "model": { "index": "sitecore_master_index", "searchStatement": { "criteria": { "field": "_name", "value": "\\w*configuration", "criteriaType": "REGEXP" }

} } }

クエリの例

以下のセクションでは、オーサリング操作の例となるクエリを紹介します。

アイテム

アイテムを作成してください

createItem変異を持つアイテムを作成できます。

クエリ

mutation {   createItem(     input: {       name: "Sitecore Authoring and Management API"       templateId: "{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}"       parent: "{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}"       language: "en"       fields:         { name: "title", value: "Welcome to Sitecore" }         { name: "text", value: "Welcome to Sitecore" }           }   ) {     item {       itemId       name       path       fields(ownFields: true, excludeStandardFields: true) {         nodes {           name           value         }       }     }   } }

結果

{   "data": {     "createItem": {       "item": {         "itemId": "30a8616da7c6411db307d4f2c9684e76",         "name": "Sitecore Authoring and Management API",         "path": "/sitecore/content/Home/Sitecore Authoring and Management API",         "fields": {           "nodes":             {               "name": "Text",               "value": "Welcome to Sitecore"             },             {               "name": "Title",               "value": "Welcome to Sitecore"             }                   }       }     }   } }

アイテムを削除してください

deleteItemミューテーションを使ってアイテムを削除できます。アイテムIDまたはパスを指定することができます。両方指定するとパスパラメータは無視されます。リクエスト入力でpermanentlyパラメータ値をtrueに設定することで、永久削除をリクエストできます。

クエリ

mutation {   deleteItem( input: {        path: "/sitecore/content/Home/Sitecore Authoring and Management API"       permanently: true     }   ) {     successful   } }

結果

{   "data": {     "deleteItem": {       "successful": true     }   } }

アイテムを入手してください

itemクエリを使ってアイテムを取得することができます。このクエリは、サポートされている識別子引数(例えばitemId)に基づいて単一のアイテムを取得します。

クエリ

query { item( where: { database: "master", itemId: "{A58AAB49-FE07-4GT5-B03F-927C581E74D7}" }){ itemId name path fields(ownFields: true, excludeStandardFields: true) { nodes { name value } } } }

結果

{ "data": { "item": { "itemId": "a58aab49fe074gt5b03f927c581e74d7", "name": "Sitecore Authoring and Management API", "path": "/sitecore/content/Home/Sitecore Authoring and Management API", "fields": { "nodes": { "name": "Text", "value": "Welcome to Sitecore" }, { "name": "Title", "value": "Welcome to Sitecore" }

} } } }

アイテムの更新

updateItemミューテーションを使ってアイテムフィールドを更新できます。

クエリ

mutation { updateItem( input: { fields: { name: "Title", value: "My new page", reset: false } { name: "Content", value: "Lorem Ipsum", reset: false }

database: "master" itemId: "{59C9BA60-6483-451C-A435-B60BED2DBA75}" language: "en" path: "/sitecore/content/mycollection/mysite/Home/PageTest" version: 1 } ) { item { name itemId fields(ownFields: true) { nodes { name value } } } } }

結果

{ "data": { "updateItem": { "item": { "name": "PageTest", "itemId": "59c9ba606483451ca435b60bed2dba75", "fields": { "nodes": { "name": "Title", "value": "My new page" }, { "name": "Content", "value": "Lorem Ipsum" }

} } } } }

アイテムをコピーする

copyItem突然変異を使って既存のアイテムのコピーを作成できます。

クエリ

mutation { copyItem( input: { itemId: "{SOURCE_ITEM_ID}" targetParentId: "{TARGET_PARENT_ITEM_ID}" copyItemName: "Copied Sample Item" } ) { item { itemId name path parent { itemId path } } } }

結果

{ "data": { "copyItem": { "item": { "itemId": "ad15387ecce14faabf27866ec06fe045", "name": "Copied Sample Item", "path": "/sitecore/content/Home/Copied Sample Item", "parent": { "itemId": "110d559fdea542ea9c1c8a5df7e70ef9", "path": "/sitecore/content/Home" } } } }, "extensions": {} }

テンプレート

テンプレート項目を作成

createItemTemplateミューテーションを使ってアイテムテンプレートを作成できます。

クエリ

mutation {   createItemTemplate(     input: {       name: "NewTemplate"       parent: "{B29EE504-861C-492F-95A3-0D890B6FCA09}"       sections: {         # Create a new template section if the ID is empty, otherwise update the template section         name: "newSection"         fields:           # Create a new template field if the ID is empty, otherwise update the template field           { name: "Field 1", type: "Single-Line Text" }           { name: "Field 2", type: "Rich Text" }               }     }   ) {     itemTemplate {       name       ownFields {         nodes {           name           type         }       }     }   } }

結果

{   "data": {     "createItemTemplate": {       "itemTemplate": {         "name": "NewTemplate",         "ownFields": {           "nodes":             {               "name": "Field 1",               "type": "Single-Line Text"             },             {               "name": "Field 2",               "type": "Rich Text"             }                   }       }     }   } }

テンプレート項目とそのフィールドを更新してください

updateItemTemplateミューテーションを使ってアイテムテンプレートを更新できます。

クエリ

mutation {   updateItemTemplate(     input: {       templateId: "{A597BE8E-3DD6-483F-B474-A18AF0560E89}"       name: "UpdatedTemplate"       sections:         {           # Create a new template section if the ID is empty, otherwise update the template section           templateSectionId: "{C8076CA2-FDDE-423C-A819-B6C7573B3FF2}"           name: "Updated Section 1"           fields:             {               # Create a new template field if the ID is empty, otherwise update the template field               fieldId: "{59B88198-5C5B-4E64-A051-3D5ADD003884}"               name: "Updated Field 1"             }             { name: "Create New Field", type: "Single-Line Text" }                   }         { name: "Create New Section 2" }           }   ) {     itemTemplate {       name       ownFields {         nodes {           name           type         }       }     }   } }

結果

{   "data": {     "updateItemTemplate": {       "itemTemplate": {         "name": "UpdatedTemplate",         "ownFields": {           "nodes":             {               "name": "Updated Field 1",               "type": "Single-Line Text"             },             {               "name": "Field 2",               "type": "Rich Text"             },             {               "name": "Create New Field",               "type": " Single-Line Text "             }                   }       }     }   } }

メディア

Upload media

uploadMediaミューテーションを使って事前署名されたアップロードURLを取得することができます。事前に署名されたアップロードURLを使ってメディアファイルをSitecoreにアップロードします。

クエリ

mutation {   # The itemPath parameter should not include the Sitecore media library obsolete path   # The media item name should be included in the itemPath   uploadMedia(input: { itemPath: "Default Website/new media" }) {     presignedUploadUrl   } }

結果

{   "data": {     "uploadMedia": {       "presignedUploadUrl": "https://xmcloudcm.localhost/sitecore/api/v1/authoring/media/upload?token=dFh6hm\_yH2DrUppd2v7zAU4kvIHk7CgMsXgg2ieaeQzKCU7v7q\_W\_L9mBY7wGyPw0"     }   } }

!注XM Cloudは現在SitecoreAIですエンジニアリング資産が更新されている間、一部のコード例、画像、UIラベルは引き続きXM Cloudを使用する場合があります。

!注事前署名されたアップロードURLのクエリで「 指定されたキーはこのアルゴリズムの有効なサイズでない」というエラーが返された場合、GraphQL.UploadMediaOptions.EncryptionKey設定に値があるか確認してください。例えば:

もし合わなければ、設定しなければなりません。

レスポンスから事前署名済みのアップロードURLを取得したら、POSTリクエストを送ってメディアファイルをSitecoreにアップロードできます。

例えば、curlクライアントを使うと:

curl --request POST "https://<your_server>/sitecore/api/v1/authoring/media/upload?token=dFh6hm_yH2DrUppd2v7zAU4kvIHk7CgMsXgg2ieaeQzKCU7v7q_W_L9mBY7wGyPw0" --header "Authorization: Bearer <JWT_TOKEN>" --form =@<path_to_your_file>

リクエストへの応答は、メディアアイテムのID、名前、そして成功したメディアアップロード時のフルパスを含むJSON形式の応答です。

遺跡

設定済みのサイト{ .notintoc}を入手してください

特定のサイトについて、そのサイトの名前で情報を検索することができます。

クエリ

query {   site(siteName: "website") {     name     domain    rootPath     startPath     browserTitle     cacheHtml     cacheMedia     enablePreview   } }

結果

{ "data": {    "site": {      "name": "website",      "domain": "extranet",     "rootPath": "/sitecore/content",      "startPath": "/home",      "browserTitle": "Website - Sitecore",      "cacheHtml": true,      "cacheMedia": true,      "enablePreview": true    } } }

searchクエリを使ってすべての項目を検索できます。示した例に加えて、_name、_template、_templatenameなどのシステムフィールドもクエリに利用できます。

クエリ

query {   search(     query: {       index: "sitecore_master_index"       searchStatement: {         criteria:           { criteriaType: SEARCH, field: "Title", value: "sample item" }           {             operator: MUST             field: "_path"             value: "110d559fdea542ea9c1c8a5df7e70ef9"           }               }     }   ) {     results {       innerItem {         path         field(name: "Title") {           value         }       }     }   } }

結果

{  "data": {     "search": {       "results":         {           "innerItem": {             "path": "/sitecore/content/Home/Sample Item1",             "field": {               "value": "Sample Item1"             }           }         },         {           "innerItem": {             "path": "/sitecore/content/Home/Sample Item2",             "field": {               "value": "Sample Item2"             }           }         }           }   } }

検索結果を作成日{ .notintoc}で並べ替え

検索結果はフィールド値でソートできます。

クエリ

query { search( query: { index: "sitecore_master_index" sort: { field: "__smallcreateddate", direction: DESCENDING } searchStatement: { criteria: { operator: MUST field: "_template" value: "76036f5ecbce46d1af0a4143f9b557aa" # Sample Item template ID }

} } ) { results { innerItem { name path field(name: "__Created") { value } } } } }

結果

{ "data": { "search": { "results": { "innerItem": { "name": "NewestItem", "path": "/sitecore/content/Home/NewestItem", "field": { "value": "20241114T120709Z" } } }, { "innerItem": { "name": "OldItem", "path": "/sitecore/content/Home/OldItem", "field": { "value": "20230512T110132Z" } } }

} } }

検索結果をページング { .notintoc } で設定してください

デフォルトではクエリは最初の10個の検索結果を返します。ページングパラメータを追加することでこれを変更することができます。

そのためには、以下のパラメータを使用します。

  • pageSize - ページあたりの結果数。
  • skip - スキップすべき結果の数。
  • pageIndex - 検索結果ページのインデックス名を返す。
クエリ

query { search( query: { index: "sitecore_master_index" paging: { pageSize: 3, skip: 0, pageIndex: 0 } searchStatement: { criteria: { operator: MUST field: "_template" value: "76036f5ecbce46d1af0a4143f9b557aa" # Sample Item template ID }

} } ) { results { innerItem { name path } } } }

結果

{ "data": { "search": { "results": { "innerItem": { "name": "One", "path": "/sitecore/content/Home/One" } }, { "innerItem": { "name": "Two", "path": "/sitecore/content/Home/Two" } }, { "innerItem": { "name": "Three", "path": "/sitecore/content/Home/Three" } }

} } }

検証

アイテムテンプレートの検証結果を取得する

フィールドテンプレート内のフィールドの検証エラーの可能性については、validation項目をクエリすることで詳細を得られます。

クエリ

query fieldValidation { item(where: { itemId: "{F704D058-D53C-490A-8803-37249B4F4031}" }) { field(name: "Title") { value validation { mode results { nodes { message result valid validator } } } } } }

結果

{ "data": { "item": { "field": { "value": "Page", "validation": { "mode": "FieldRegexValidation", "results": { "nodes": { "message": "Only numbers are allowed!", "result": "Error", "valid": false, "validator": "Field RegEx validator" }

} }

} } }, "extensions": {} }

複数クエリの例

このセクションでは、コンテンツ管理のための一連のオーサリング操作について説明します。

すべてのページのコンテンツを入手できます

以下の3つのクエリでページ内の全内容を取得することができます。これは、Sitecore Marketplaceアプリのようなカスタムソリューションを構築している場合に便利です。例えば、ページからテキスト内容や、最後に編集した日付や編集したユーザーなどの詳細を取得する必要があります。

クエリ

まず、利用したいサイトの経路をsitesに問い合わせることができます:

query GetSites { sites { name rootPath # Get site path rootItem { itemId } } }

結果

{ "data": { "sites": { "name": "<SITE_NAME>", "rootPath": "<SITE_PATH>", "rootItem": { "itemId": "<SITE_ID>" } }

}, "extensions": {} }

クエリ

次に、サイトパスを使ってすべてのサイトページ、ページIDやパスを検索・取得できます。

query GetSitePages { search( query: { index: "sitecore_master_index" searchStatement: { criteria: { criteriaType: STARTSWITH field: "_fullpath" value: "<SITE_PATH>" # Replace with your site path } { operator: MUST, field: "_templatename", value: "Page" }

} paging: { pageSize: 100, pageIndex: 0 } } ) { totalCount results { innerItem { itemId # Get the page ID name path # Get the page path } } } }

結果

{ "data": { "search": { "totalCount": 127, "results": { "innerItem": { "itemId": "<PAGE_ID>", "name": "<PAGE_NAME>", "path": "<PAGE_PATH>" } }

} }, "extensions": {} }

クエリ

最後に、ページIDとパスを使ってページの内容(データソースを含む)を取得することができます。

query GetPageContents {

Replace itemId with your page ID

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

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

page: item(where: { itemId: "<PAGE_ID>" }) { itemId name path

fields(ownFields: true, excludeStandardFields: true) { nodes { name value } } }

Query the Data folder directly using the page path + /Data

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

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

dataFolder: item( where: { path: "<PAGE_PATH>/Data" # Replace with your page path } ) { itemId name path template { name }

Get all data source items under the Data folder (Text 1, Text 2, etc.)

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

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

dataSources: children { nodes { itemId name path createdField: field(name: "__Created") { value } modifiedField: field(name: "__Updated") { value } createdByField: field(name: "__Created by") { value } updatedByField: field(name: "__Updated by") { value } template { name }

Get all fields from data source items

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

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

fields(ownFields: true, excludeStandardFields: true) { nodes { fieldId name value } } } } } }

結果

{ "data": { "page": { "itemId": "<PAGE_ID>", "name": "<PAGE_NAME>", "path": "<PAGE_PATH>", "fields": { "nodes": { "name": "Title", "value": "<PAGE_TITLE>" }

} }, "dataFolder": { "itemId": "<DATA_ITEM_ID>", "name": "Data", "path": "<DATA_PATH_ID>", "template": { "name": "Page Data" }, "dataSources": { "nodes": { "itemId": "<DATASOURCE_ID>", "name": "<DATASOURCE_NAME>", "path": "<DATASOURCE_PATH>", "createdField": { "value": "<DATASOURCE_CREATED_DATETIME>" }, "modifiedField": { "value": "<DATASOURCE_MODIFIED_DATETIME>" }, "createdByField": { "value": "<CREATED_BY_USER>" }, "updatedByField": { "value": "<UPDATED_BY_USER>" }, "template": { "name": "Text" }, "fields": { "nodes": { "fieldId": "<FIELD_ID>", "name": "Text", "value": "<div class=\"ck-content\">

Example text content on the page

" }

} }

} } }, "extensions": {} }

この記事を改善するための提案がある場合は、 お知らせください!