Zoho Sheet連携用カスタム関数のサンプル

Zoho Sheet連携用カスタム関数のサンプル

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

前提条件

  1. ユーザーはZoho SheetとQntrlのアカウントを持っている必要があります。
  2. ユーザーは、QntrlからZoho Sheetへのアクセスを認証するためのコネクションを設定する必要があります。

ビジネスケース

製薬会社のジルカー社は、注文データの管理と処理にQntrlを使用しています。新しい注文が作成されるたびに、ユーザーはカードに顧客詳細を入力して注文を作成します。その後、注文は完了するまでブループリントで定義された手順に沿って進みます。
 
ジルカーは顧客詳細のデータ管理にもZoho Sheetを使用しているため、クライアントIDが入力された時点で、Zoho Sheetにある既存の顧客詳細を各カードに事前入力する回避策を求めていました。
 
これにより、ジルカーは次のことを実現できます。
  1. 各カードに顧客詳細を入力する手作業を削減
  2. 顧客情報の保存場所を一元化
  3. データ入力を自動化してエラーを削減

解決方法

ジルカーの要件に対応するカスタム関数を作成しました。この関数の動作は次のとおりです。
  1. ユーザーは、クライアントIDとカードの詳細のみを入力してカードを作成します。
  2. カードが作成されると、カスタム関数が実行され、Zoho Sheetのデータがカードに反映されます。
  3. 詳細がカードで自動的に更新された後、ステータス更新がZoho Sheetに送信されます。

設定方法

組織でこのカスタム関数を設定する手順を順に説明します。
 
ステップ1:まず、ボードで顧客詳細を取得するフォームを作成します。
  1. [クライアントID]項目を必須にします。この手順は必須ではありませんが、推奨されます。
  2. 顧客詳細項目である[クライアント名]、[連絡先]、[顧客所在地]の[表示設定]を無効にします。
フォームを作成したら、ボード内の残りの手順を完了します。



ステップ2:次に、新しいカスタム関数を作成し、フォーム、コネクション、シートの詳細を設定します。



ステップ3:[ビジネスルール]に移動し、「注文詳細」ボードで新しいカードが作成されるたびに上記のカスタム関数が実行されるように、[即時アクション]を設定します




ステップ4:次に、[ボード]に移動し、[クライアントID]とカードの詳細を入力してカードを作成します。



カードが作成されると、設定したビジネスルールによってリンクされたカスタム関数が実行され、カードに顧客詳細が入力されます。詳細がシートに反映されたことを確認できるように、Zoho Sheetのステータス列はカスタム関数によって自動的に「Updated」に変わります。
  1. 注:クライアントIDとその他の顧客詳細は、Zoho Sheetの1行に保存されます。


参考用のサンプルカスタムスクリプトをこちらに用意しています。このカスタム関数の詳細については、サポートチームにメールでお問い合わせください。
//DelugeにはZohoサービスとの定義済み連携があります。Zoho Sheetにも対応しています
//シートのgetRecords APIを使用すると、シート内のすべてのデータ、または条件に一致する特定のデータを取得できます
//必須パラメーター
//1. リソースID - シートのURLから取得できます
//2. シート名 - 下部に表示されるシートの名前
//3. クエリマップ - 条件と範囲の設定に使用するキー/値マップ https://www.zoho.com/deluge/help/sheet/get-データ.html#Example2
//4. コネクションリンク名
queryMap = Map();
//条件の形式: 'column name'='column value'
//例: 'Client ID'='1001'
queryMap.put('criteria','\'Client ID\'=' + client_id);
data = zoho.sheet.getRecords('krz56389e2107d77a434ab731d3271a00c77d','Sheet1',queryMap,'zoho_sheet');
//上記の条件に一致するデータを取得します
データ = data.getJson('データ');
//この例ではクライアントIDが一意であるため、データは1件のみ返されます。そのため、インデックス0のデータを取得します
データ = データ.get(0);
//各値を列名で取得します
name = データ.get('Client Name');
contact = データ.get('Contact').toString();
location = データ.get('Location');
info name;
//デバッガーでnameを出力します
paramMap = Map();
//カード更新用にparamsの値を構成します
//Qntrlの関連する項目名にマッピングします
paramMap.put('customfield_shorttext18',name);
paramMap.put('customfield_shorttext16',contact);
paramMap.put('customfield_shorttext11',location);
job = invokeurl
[
type :POST
parameters:paramMap
connection:'zoho_qntrl'
];
info job;
//デバッガーでジョブ更新の応答を出力します
//データの取得時と同じ条件を使用します
newValues = Map();
newValues.put('Status','Updated');
optMap = Map();
updateResp = zoho.sheet.updateRecords('krz56389e2107d77a434ab731d3271a00c77d','Sheet1','\'Client ID\'=' + client_id,newValues,optMap,'zoho_sheet');
info updateResp;