コンテンツ管理
GoogleSheetsアドオンを使用したコンテンツの移行
By Eric Dugre
外部システムからコンテンツを移行する場合、データベースには何百ものアイテムが保存されている可能性があります。 Kentico Kontentでこれらのコンテンツアイテムを手動で作成することは、恐ろしくて時間のかかる作業です...確かにもっと良い方法はありますか?
Kentico Kontentを使用してコンテンツを管理するのがいかに簡単であるかを最近発見した場合は、「既存のCMSの代わりにこれを使用しないのはなぜですか?」と思うかもしれません。問題は、別のCMSをしばらく使用している場合、Kontentに移行したいコンテンツアイテムがそのCMSにすでに数百または数千もある可能性があることです。自分でコンテンツを手動で入力することも、 管理APIを使用するツールを作成することもできます。これらのオプションはどちらも時間とリソースを投資する必要があります。データを自動的に移行する方法があれば素晴らしいと思いませんか?
アドオンのインストール
新しいGoogleスプレッドシートアドオンを使用すると、ボタンをクリックするだけでスプレッドシートから複数のコンテンツアイテムをインポートできます。 このツールは、新しいアイテムをKontentプロジェクトにインポートできるだけでなく、外部IDまたは名前を使用して、ワークフローステップで既存のコンテンツアイテムを更新することもできます。
開始するには、G-Suite Marketplaceから、またはGoogleSheetsサイドバーから直接 アドオンをインストールします。インストール後、サイドバーのKontentアイコンをクリックして、アドオンのホームページをロードします。
仕組みは次のとおりです。古いCMSに100個の製品があるとします。インターフェイスでこのデータをエクスポートする方法があるかもしれませんが、そうでない場合は、データベースから直接データをエクスポートできます(これについては後で詳しく説明します)。すべての製品に何らかの一意の識別子があることがわかります。これは、「SKU-123」のようなSKU番号、または「4afa3a64-f525-4e2f-b7e7-784f969d333c」のようなGUIDの場合があります。
いずれにせよ、これは新しいKenticoKontentアイテムのexternal_idとして使用できます。これは一意のIDであり、インターフェースには表示されませんが、コンテンツアイテムを外部データベースの対応するレコードにリンクします。インポートプロセスを再実行する必要がある場合、このツールは、このexternal_idに基づいて適切なコンテンツアイテムを見つけ、新しいアイテムを作成する代わりに既存のアイテムを更新できます。
商品をスプレッドシートにエクスポートしてGoogleスプレッドシートにアップロードしたら、時間をかけて、以下の[セル値の書式設定]セクションのルールに従って行が書式設定されていることを確認する必要があります。これにより、インポートプロセス中のエラーを防ぎ、Kontentですべてが正しく表示されるようになります。その後、インポートする準備が整いました。次のいくつかのセクションでは、各ステップについて詳しく説明します。
スプレッドシートの準備
既存のデータベースからコンテンツを移行する場合は、最初にデータをExcelスプレッドシートにエクスポートする必要があります。これを行うには、いくつかの方法があります。
どのように実行しても、最初の行にヘッダーが含まれ、その下にデータが含まれるスプレッドシートが作成されます。スプレッドシートをGoogleスプレッドシートで開いて、Kontentにインポートする準備をします。ファイルをブラウザにドラッグして、スプレッドシートをGoogleドライブにアップロードします。ファイルがアップロードされたら、右クリックして[プログラムから開く]> [Googleスプレッドシート]を選択します。
Googleはファイルをエディターで開きますが、それでもXLSXファイルです。 Sheetsアドオンを使用できるようにするには、スプレッドシートをGoogleスプレッドシートとして保存する必要があります。 [ファイル]メニューで、 [Googleスプレッドシートとして保存]を選択します。
これで、データがGoogleスプレッドシートとして利用できるようになり、データをインポートするためのKenticoKontentオプションとともに[アドオン]メニューが表示されます。
プロジェクトIDとキーの設定
コンテンツをインポートするには、次の3つのキーが必要です。
- プロジェクトID
- APIキーのプレビュー
- 管理APIキー
これらは、KenticoKontentのAPIキーページにあります。
これらのキーを見つけたら、サイドバーのKentico Kontentアイコンをクリックしてメインメニューを開き、 [プロジェクト設定]に移動してキーを追加し、[保存]をクリックします。
ヘッダーの設定
前に述べたように、シートの最初の行には列のヘッダーが含まれます。製品を外部CMSからKontentに移行するとします。シートは次のようになります。
SKUGUID | SKUNumber | SKUName | SKUPrice | SKUCreated |
F4891FB5-5215-4795-8A6F-18A4F68394FD | CO-ETH-YIRGACHEFFE | エチオピアYirgacheffe(カフェイン抜き) | 3.5 | 2017-01-10 15:46:54.5576119 |
DD84A64C-F0BE-42AA-9F47-228ED6520D27 | CO-ETH-YIRGACHEFFE-5ポンド | エチオピアYirgacheffe(カフェイン抜き)(5ポンド) | 52 | 2017-01-10 16:02:44.6796146 |
031A9DE2-51F4-41F7-B2FE-5825FBAADD6C | CO-ETH-YIRGACHEFFE-4-オンス | エチオピアYirgacheffe(カフェイン抜き)(4オンス) | 3.5 | 2017-01-10 16:02:44.6186085 |
FE991A97-3998-4FA0-9DF7-59A00622297B | CO-ETH-YIRGACHEFFE-16オンス | エチオピアYirgacheffe(カフェイン抜き)(16オンス) | 12 | 2017-01-10 16:02:44.5085975 |
これらのヘッダーは外部CMSから取得されますが、Kontent Sheetsアドオンは、各ヘッダーが要素のコード名であることを想定しています。アイテムを作成するコンテンツタイプを開くと、{#}をクリックして各要素のコード名を表示できます。
メインメニューの[シートの生成]をクリックして、プロジェクトのすべてのコンテンツタイプを表示するリストを開くこともできます。いずれかをクリックすると、要素をヘッダーとして含む新しいシートが作成されます。コンテンツタイプの要素コード名に加えて、シートには他に5つのヘッダーが含まれている必要があります。
- name(必須):作成または更新するコンテンツアイテムの名前。
- external_id(オプション):更新するコンテンツアイテムの外部ID。
- codename(オプション):作成/更新されるコンテンツアイテムのコードネーム。
- 言語(オプション):更新するバリアントの言語。これは、プロジェクトの[ローカリゼーション]ページの言語のコード名と一致する必要があり、大文字と小文字が区別されます。言語が提供されていない場合、アドオンは管理APIを使用してプロジェクトのデフォルト言語を取得します。
- currency_format(オプション):Kontentの「number」要素の値を解析する方法を決定するために使用されます。 US形式の文字列( '1,500.75')およびEU形式の文字列( '1 500,75')は、この設定に基づいて有効な数値に解析されます。 「US」または「EU」のいずれかである必要があります。省略または空の場合、USフォーマットが使用されます。
既存のアイテムの検索方法とコンテンツアイテム名とコードネームの更新方法の詳細については、「 既存のアイテムの検索と更新」セクションを参照してください。
上記のサンプル製品シートのヘッダーを調整すると、シートは次のようになります。
external_id | sku | 名前 | 価格 | date_offered |
F4891FB5-5215-4795-8A6F-18A4F68394FD | CO-ETH-YIRGACHEFFE | エチオピアYirgacheffe(カフェイン抜き) | 3.5 | 2017-01-10 15:46:54.5576119 |
DD84A64C-F0BE-42AA-9F47-228ED6520D27 | CO-ETH-YIRGACHEFFE-5ポンド | エチオピアYirgacheffe(カフェイン抜き)(5ポンド) | 52 | 2017-01-10 16:02:44.6796146 |
031A9DE2-51F4-41F7-B2FE-5825FBAADD6C | CO-ETH-YIRGACHEFFE-4-オンス | エチオピアYirgacheffe(カフェイン抜き)(4オンス) | 3.5 | 2017-01-10 16:02:44.6186085 |
FE991A97-3998-4FA0-9DF7-59A00622297B | CO-ETH-YIRGACHEFFE-16オンス | エチオピアYirgacheffe(カフェイン抜き)(16オンス) | 12 | 2017-01-10 16:02:44.5085975 |
セル値のフォーマット
データのインポートでエラーが発生しないように、各列のデータが格納される要素に従ってフォーマットされていることを確認してください。ほとんどの要素(テキストや数値など)は単純ですが、特定のフォーマットが必要なものもあります。
- リッチテキスト:リッチテキスト値の設定を参照してください
- 日付と時刻:スクリプトは最初にJavaScriptのDate(string)を使用して値の解析を試みます コンストラクターなので、有効なDateTime文字列はすべて成功します。一般的な有効な文字列は、「mm / dd / yyyy hh:mm am / pm」の形式になります。スクリプトは、スラッシュ('12 -25-2019 6:00 AM ')またはSQLからのタイムスタンプ(' 2019-12-25 06:00:00.0000000 ')の代わりにダッシュを使用する文字列も受け入れます。
- 数値:値が「12.50」のような有効な浮動小数点数でない場合、スクリプトはcurrency_format値に基づいて数値を解析しようとします(ヘッダーの設定を参照)。現在、USおよびEU形式がサポートされているため、有効な数値の例としては、「1,500.75」、「1.500,75」、および「1500,75」があります。セルには文字や通貨記号を含めないでください。
EUフォーマットを使用している場合は、プレーンテキストフォーマットを使用するようにシートの数値列を変更することをお勧めします。
- URLスラッグ:URLスラッグ要素に特別なフォーマットは必要ありません。値が指定されている場合、要素のモードは「カスタム」に変更され、別のコンテンツタイプ要素に基づいて自動生成されなくなります。 URL Slug要素を自動生成に戻すには、値を「#autogenerate#」に設定します。
- 分類法と複数選択:値は、コンマで区切ったアイテムのコードネームである必要があります(例: 'on_sale、bestseller')
- アセット:アセット要素は複数のアセットを受け入れることができるため、アセット要素の値はコンマ区切りのリストにする必要があります。単一のアセットの形式は
: です。ここで、タイプはidまたはexternal_idのいずれかであり、識別子は対応する値です。複数のアセットを一度に更新する例は、 「id:0013263e-f2a9-40b1-9a3e-7ab6510bafe5、id:08bf515c-3b0e-4760-907b-6db0a22d41f3」です。 - リンクされたアイテム:このセルの値はアセットと同じです。
: の形式の項目のコンマ区切りのリストである必要があります。 id 、 external_id 、またはcodenameを使用して、コンテンツアイテムを参照できます。例: 'codename:birthday_party、id:eba1015a-dfd4-5736-abc1-5de3ed5df732 。 '
コンテンツのインポート
スプレッドシートが準備されたら、最後のステップが1つあります。シートの名前は、インポートされたアイテムが使用するコンテンツタイプのコード名と一致する必要があります。画面の下部にあるシートの名前を右クリックし、[名前の変更]を選択して名前を変更できます。 [シートの生成]メニューを使用してシートを作成した場合は、コンテンツタイプのコード名がすでに含まれています。
これで、データをインポートする準備が整いました。メインメニューを開き、[インポート]を選択します。始める前に2つのオプションがあります:
- 既存のアイテムの更新:有効にすると、既存のコンテンツアイテムは、各行のexternal_id 、または外部ID列がない場合は名前を使用して更新を試みます。無効にすると、常に新しいアイテムが作成されますが、システムにすでに存在する外部IDを指定した場合は、エラーが発生する可能性があることに注意してください。すべてのエラーの場合と同様に、スクリプトはそのレコードをスキップして、シートの残りの部分の処理を続行します。
- コンテンツアイテムのプリロード:有効にすると、スクリプトは開始時にプロジェクトからすべてのコンテンツアイテムをロードします。スクリプトは既存のアイテムを見つけようとすると、キャッシュされたデータを使用するため、API呼び出しの数と実行時間が大幅に削減されます。
[実行]ボタンをクリックした後、スクリプトが実行されるまでお待ちください。完了すると、行ごとに実行された操作の詳細な記録と一般情報を含む新しいウィンドウシートが作成されます。
このシートをGoogleドライブに残すか、インポート履歴の記録としてローカルに保存できます。
それでおしまい!この新しいツールを使用すると、コードをまったく記述せずに、コンテンツをKenticoKontentプロジェクトにすばやく簡単にインポートできます。ツールはGoogleスプレッドシート内で直接実行されるため、インポート用のデータを準備する際に共同編集するという追加のメリットも得られます。 ここにアドオンをインストールして、今すぐコンテンツのインポートを開始してください。
質問、バグ、または機能のリクエストがある場合は、 GitHubリポジトリに送信してください。