不動産会社は毎日新規物件データをCSV形式で受領しています。目標は、このデータを用いてCRM内で「Floorプラン」データを一括自動作成することです。CSVファイルはZIP化され、WorkDriveに保存されます。この設定によりデータの一貫性が保たれ、手動インポートの手間を省くことができます。
設定手順:
1. 必須タブ項目を含む.csvファイルを準備します。
2. 「Job_Id」という名前のCRM変数を作成します
3. 設定 API 外部連携
コード
Function 1: 一括書き込みジョブの開始
(WorkDrive ファイルをダウンロード → CRM にアップロード → 一括書き込みジョブを開始 → ジョブIDを保存)
- // WorkDrive からファイルを取得
- headerMap = Map();
- headerMap.put('承認する','application/vnd.api+json');
- fetchFiles = invokeurl
- [
- url :'https://www.zohoapis.com/workdrive/api/v1/files/
/files'
- メソッド : GET
- ヘッダー: headerMap
- connection:'workdrive'
- ];
- documentId = fetchFiles.getJSON('data').get(0).get('id');
- // ファイルをダウンロードする
- downloadFile = invokeurl
- [
- url :'https://download.zoho.com/v1/workdrive/download/'+ documentId
- 種類 :取得する
- ヘッダー:headerMap
- connection:'workdrive'
- ];
- // CRMへアップロードする
- headerMap = Map();
- headerMap.put('feature', 'bulk-write');
- headerMap.put('X-CRM-ORG', '
');
- uploadFile = invokeurl
- [
- url: 'https://content.zohoapis.com/crm/v8/アップロードする'
- 種類: POST
- ヘッダー: headerMap
- files: downloadFile
- connection: 'crm'
- ];
- fileId = uploadFile.取得する('詳細').取得する('file_id');
- // Bulk Writeデータの内容を構築
- fieldMappings = list();
- fieldMappings.追加する({'api_name':'名前','index':0});
- fieldMappings.追加する({'api_name':'メール','index':1});
- resource = Map();
- resource.put('種類','data');
- resource.put('タブ',{'api_name':'Floor_plans'});
- resource.put('field_mappings',fieldMappings);
- resource.put('file_id',fileId);
- data = list();
- data.追加する(resource);
- データの内容 = Map();
- データの内容.put('operation','insert');
- データの内容.put('ignore_empty','真');
- データの内容.put('callback',{'url': 'https://Webhook.site/
','method':'post'});
- データの内容.put('resource',data);
- // 一括書き込みAPIをトリガーする
- headerMap = Map();
- headerMap.put('コンテンツの種類','application/json');
- bulkWrite = invokeurl
- [
- url :'https://www.zohoapis.com/crm/bulk/v8/write'
- 種類 :POST
- パラメーター:データの内容.toString()
- ヘッダー:headerMap
- connection:'crm'
- ];
- jobId = createBulkWrite.getJSON('詳細').取得する('id');
- jobIdVariable = '<変数のIDを追加する>';
- variableMap = Map();
- variableMap.put('id',jobIdVariable);
- variableMap.put('値',jobId);
- variablesList = List();
- variablesList.追加する(variableMap);
- param = Map();
- param.put('variables',variablesList);
// Job IDの値で変数を更新する
- updateVariable = invokeurl
- [
- url :'https://www.zohoapis.com/crm/v8/設定/variables'
- 種類 :PUT
- パラメーター:param.toString()
- connection:'crm'
- ];
- info updateVariable;
機能2: Jobステータスの追跡 & Resultのダウンロード
(スケジュールを使って実行 – の後15~30分)
カスタム Solution 作成者 Francis (Vishnu) | Zoho パートナー サポート
ヒント:よくあるエラーを回避する方法
- スクリプト内で正しいAPI名をタブ&項目に対して使用するようにしてください。
- 意図した出力を取得するために、info() ログを各変数ごとに使用し、Zoho CRM Function IDEのコンソールセクションで動作や出力を確認することを推奨します。
- 関数スクリプト内で外部連携を使用している場合は、必須スコープを接続に追加し、意図したAPI操作ができるようにしてください。また、Deluge Invoke URLやIntegrationタスクに渡す際は、外部連携のリンク名(例:crm_connection)を必ず使用してください。
- 一般的な運用として、US DCのAPIエンドポイントを使用していますが、他のDC(IN、EU、CA、AUなど)のCRMアカウントをご利用の場合は、該当するDCのAPIエンドポイントURLを使用してください。
以下の ガイド記事を参照し、Best Practices for Optimizing the コード および Zoho CRM 全体でカスタム関数を展開するさまざまな方法についてご確認ください。。