Zoho CRMでバルク書き込みAPIとDelugeを使用して大量レコードのインポートを自動化する

Zoho CRMでバルク書き込みAPIとDelugeを使用して大量レコードのインポートを自動化する

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

概要:

この記事では、Zoho CRMのBulk Write API(v8)をDelugeスクリプトとZoho WorkDriveと組み合わせて、大量データのインポート業務を自動化する方法を解説します。このプロセスは2つのカスタム関数に分かれており、1つは一括インポートの開始用、もう1つはステータスの追跡用です。

カスタム関数: WorkDriveからの一括データインポート自動化  

要件概要:


多くの企業は、顧客データベースのような大規模なデータ入力業務に直面しています。CRMのUIを使い手動でデータをアップロードする方法は、時間がかかり、エラーも発生しやすく、効率的ではありません。

本ソリューションでは、以下の方法でワークフローを自動化します。
  1. WorkDriveにアップロードされた.CSVデータを含む.郵便番号ファイル
  2. Zoho CRMでの2つのカスタム関数:
a) ファイルをアップロードし、Bulk Write APIを起動
b) ジョブステータスを追跡し、結果を取得

Zoho CRMでのカスタム関数の導入  

このユースケースでは、2つのカスタム関数が必要です。
  1. 関数1:
    • WorkDriveから.郵便番号ファイルを取得
    • ファイルをCRMへアップロード
    • Bulk Write APIを呼び出す
    • ジョブIDをCRM変数に保存
  1. 関数2:
    • ジョブIDを取得します
    • ジョブのステータスを追跡します
    • 完了後に結果ファイルをダウンロードします
Function 2の実行をCRMのSchedulesタブで遅延実行として設定できます。


ユースケース
  

シナリオ:


不動産会社は毎日新規物件データをCSV形式で受領しています。目標は、このデータを用いてCRM内で「Floorプラン」データを一括自動作成することです。CSVファイルはZIP化され、WorkDriveに保存されます。この設定によりデータの一貫性が保たれ、手動インポートの手間を省くことができます。

設定手順:
 

1. 必須タブ項目を含む.csvファイルを準備します。  
  • 例:カラム:名前、メールなど
  • ファイルをZIP化し、指定のWorkDriveフォルダーにアップロードします。
2. 「Job_Id」という名前のCRM変数を作成します  
  • API名:Job_Id
  • 種別:Text
3. 設定 API 外部連携 
  • 1つはWorkDrive
  • 1つはZoho CRM(この例では crm という名前)


コード  

Function 1: 一括書き込みジョブの開始  

(WorkDrive ファイルをダウンロード → CRM にアップロード → 一括書き込みジョブを開始 → ジョブIDを保存)

  1. // WorkDrive からファイルを取得
  2. headerMap = Map();
  3. headerMap.put('承認する','application/vnd.api+json');

  4. fetchFiles = invokeurl
  5. [
  6. url :'https://www.zohoapis.com/workdrive/api/v1/files/ /files'
  7. メソッド : GET
  8. ヘッダー: headerMap
  9. connection:'workdrive'
  10. ];
  11. documentId = fetchFiles.getJSON('data').get(0).get('id');

  12. // ファイルをダウンロードする
  13. downloadFile = invokeurl
  14. [
  15. url :'https://download.zoho.com/v1/workdrive/download/'+ documentId
  16. 種類 :取得する
  17. ヘッダー:headerMap
  18. connection:'workdrive'
  19. ];

  20. // CRMへアップロードする
  21. headerMap = Map();
  22. headerMap.put('feature', 'bulk-write');
  23. headerMap.put('X-CRM-ORG', ' ');

  24. uploadFile = invokeurl
  25. [
  26. url: 'https://content.zohoapis.com/crm/v8/アップロードする'
  27. 種類: POST
  28. ヘッダー: headerMap
  29. files: downloadFile
  30. connection: 'crm'
  31. ];

  32. fileId = uploadFile.取得する('詳細').取得する('file_id');

  33. // Bulk Writeデータの内容を構築
  34. fieldMappings = list();
  35. fieldMappings.追加する({'api_name':'名前','index':0});
  36. fieldMappings.追加する({'api_name':'メール','index':1});

  37. resource = Map();
  38. resource.put('種類','data');
  39. resource.put('タブ',{'api_name':'Floor_plans'});
  40. resource.put('field_mappings',fieldMappings);
  41. resource.put('file_id',fileId);

  42. data = list();
  43. data.追加する(resource);

  44. データの内容 = Map();
  45. データの内容.put('operation','insert');
  46. データの内容.put('ignore_empty','真');
  47. データの内容.put('callback',{'url': 'https://Webhook.site/ ','method':'post'});
  48. データの内容.put('resource',data);

  49. // 一括書き込みAPIをトリガーする
  50. headerMap = Map();
  51. headerMap.put('コンテンツの種類','application/json');

  52. bulkWrite = invokeurl
  53. [
  54. url :'https://www.zohoapis.com/crm/bulk/v8/write'
  55. 種類 :POST
  56. パラメーター:データの内容.toString()
  57. ヘッダー:headerMap
  58. connection:'crm'
  59. ];

  60. jobId = createBulkWrite.getJSON('詳細').取得する('id');

  61. jobIdVariable = '<変数のIDを追加する>';

  62. variableMap = Map();
  63. variableMap.put('id',jobIdVariable);
  64. variableMap.put('値',jobId);

  65. variablesList = List();
  66. variablesList.追加する(variableMap);

  67. param = Map();
  68. param.put('variables',variablesList);

  69. // Job IDの値で変数を更新する
  70. updateVariable = invokeurl
  71. [
  72. url :'https://www.zohoapis.com/crm/v8/設定/variables'
  73. 種類 :PUT
  74. パラメーター:param.toString()
  75. connection:'crm'
  76. ];
  77. info updateVariable;




機能2: Jobステータスの追跡 & Resultのダウンロード  

(スケジュールを使って実行 – の後15~30分)

  1. // Job IDの変数情報を取得
  2. getVariableInfo = invokeurl
  3. [
  4. url: 'https://www.zohoapis.com/crm/v8/設定/variables/3361723000088498029'
  5. 種類: 取得
  6. connection:'stagehistory'
  7. ];
  8. info getVariableInfo;

  9. variableValue = getVariableInfo.getJSON('variables').取得(0).取得('値');
  10. info variableValue ;

  11. // Job 詳細 API を通じてステータスを確認する
  12. jobDetails = invokeurl
  13. [
  14. url: 'https://www.zohoapis.com/crm/bulk/v8/write/'+jobId
  15. 種類: 取得する
  16. connection:'stagehistory'
  17. ];
  18. info jobDetails;

  19. jobStatus = jobDetails.getJSON('ステータス');

  20. // ジョブのステータスを確認する
  21. if(jobStatus == '完了') {
  22. // ジョブのステータスが完了の場合にタスクを実行するためのロジック
  23. }
カスタム Solution 作成者 Francis (Vishnu) | Zoho パートナー サポート

ヒント:よくあるエラーを回避する方法  

  1. スクリプト内で正しいAPI名タブ&項目に対して使用するようにしてください。

  2. 意図した出力を取得するために、info() ログを各変数ごとに使用し、Zoho CRM Function IDEのコンソールセクションで動作や出力を確認することを推奨します。

  3. 関数スクリプト内で外部連携を使用している場合は、必須スコープを接続に追加し、意図したAPI操作ができるようにしてください。また、Deluge Invoke URLやIntegrationタスクに渡す際は、外部連携のリンク名(例:crm_connection)を必ず使用してください。

  4. 一般的な運用として、US DCのAPIエンドポイントを使用していますが、他のDC(IN、EU、CA、AUなど)のCRMアカウントをご利用の場合は、該当するDCのAPIエンドポイントURLを使用してください。
以下の ガイド記事を参照し、Best Practices for Optimizing the コード および Zoho CRM 全体でカスタム関数を展開するさまざまな方法についてご確認ください。



ご不明点がございましたら、どうぞお気軽に パートナー-サポート@zohocorp.com までご連絡ください。

また、すべての 「Europe および イギリスのパートナー」の皆様は、パートナー-サポート@eu.zohocorp.comまでご連絡ください。