カスタム関数 - 例
カスタム関数は、単純なプログラムスクリプトを実行して、関連するCRMタブ、または外部アプリケーションのデータを更新するために使用できます。カスタム関数を使用することで、(Zoho Creatorによる)Delugeスクリプトを使用してスクリプトのプログラムを作成し、それをワークフロールールに関連付け、ビジネスプロセスを自動化できます。ここでは、最も便利なカスタム関数をいくつか紹介します。
ボタン型の機能
見込み客を別のタブのデータに変換
カスタム関数の種類:ボタン
カスタム関数の詳細:ボタンをクリックするだけで、見込み客を別のタブ([取引先]、[連絡先]、[商談]など)のデータに変換できます。
設定方法:
ボタンの配置:ボタンは、[見込み客]タブの[表示]ページに配置する必要があります。
引数の関連付け:この処理を設定するには- [設定] > [カスタマイズ] > [タブ] > [見込み客] > [リンクとボタン] > [+新しいボタンの作成]をクリックしてください。
- ボタン名を入力し、表示ページを選択して、[カスタム関数の作成]を選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「leadId」を入力し、値として「見込み客のID」を選択してください。
- [+引数の追加]をクリックし、名前に「Authtoken」を入力してください。
- [カスタム値の入力]をクリックし、ボックスにCRMの認証トークンを入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
- [自分のボタンを作成]ページで、[保存]をクリックしてください。
注:
変換後に見込み客データを削除しない場合は、スクリプトの最後の行をコメントしてください。
Script:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Leads", leadIdLong);
first = ifnull(leadDetails.get("First Name"),"");
last = ifnull(leadDetails.get("Last Name"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Account Name"), ifnull(leadDetails.get("Company"),""));
AcccountMap.put("Annual Revenue", ifnull(leadDetails.get("Annual Revenue"),""));
AcccountMap.put("Billing City", ifnull(leadDetails.get("City"),""));
AcccountMap.put("Billing Country", ifnull(leadDetails.get("Country"),""));
AcccountMap.put("Description", ifnull(leadDetails.get("Description"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Industry", ifnull(leadDetails.get("Industry"),""));
AcccountMap.put("Employees", ifnull(leadDetails.get("No of Employees"),""));
AcccountMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
AcccountMap.put("Rating", ifnull(leadDetails.get("Rating"),""));
AcccountMap.put("Billing State", ifnull(leadDetails.get("State"),""));
AcccountMap.put("Billing Street", ifnull(leadDetails.get("Street"),""));
AcccountMap.put("Billing Code", ifnull(leadDetails.get("Zip Code"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Accounts"), AcccountMap);
newaccountId = AccountCreate.get("Id");
ContactMap = map();
ContactMap.put("First Name", ifnull(leadDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(leadDetails.get("Last Name"),""));
ContactMap.put("Mailing City", ifnull(leadDetails.get("City"),""));
ContactMap.put("Mailing Country", ifnull(leadDetails.get("Country"),""));
ContactMap.put("Mailing State", ifnull(leadDetails.get("State"),""));
ContactMap.put("Mailing Street", ifnull(leadDetails.get("Street"),""));
ContactMap.put("Mailing Zip", ifnull(leadDetails.get("Zip Code"),""));
ContactMap.put("Description", ifnull(leadDetails.get("Description"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Title", ifnull(leadDetails.get("Title"),""));
ContactMap.put("Email", ifnull(leadDetails.get("Email"),""));
ContactMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
ContactMap.put("Mobile", ifnull(leadDetails.get("Mobile"),""));
ContactMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
ContactMap.put("Secondary Email", ifnull(leadDetails.get("Secondary Email"),""));
ContactMap.put("Skype ID", ifnull(leadDetails.get("Skype ID"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contacts", ContactMap);
newcontactId = ContactCreate.get("Id");
PotentialMap = map();
PotentialMap.put("Potential Name", name);
PotentialMap.put("City", ifnull(leadDetails.get("City"),""));
PotentialMap.put("Country", ifnull(leadDetails.get("Country"),""));
PotentialMap.put("State", ifnull(leadDetails.get("State"),""));
PotentialMap.put("Street", ifnull(leadDetails.get("Street"),""));
PotentialMap.put("Zipcode", ifnull(leadDetails.get("Zip Code"),""));
PotentialMap.put("Description", ifnull(leadDetails.get("Description"),""));
PotentialMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
PotentialMap.put("ACCOUNTID",newaccountId );
PotentialMap.put("CONTACTID",newcontactId );
PotentialCreate = zoho.crm.create("Potentials", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId);
return "Lead converted successfully";発注書から請求書を作成
カスタム関数の種類:ボタン
カスタム関数の詳細:ボタンを一度押すだけで、発注書に対する請求書を生成できます。このように、非常に簡単です。
設定方法:
ボタンの配置:ボタンは、[発注書]タブの[表示]ページに配置する必要があります。
引数の関連付け:この処理を設定するには- [設定] > [カスタマイズ] > [タブ] > [発注書] > [リンクとボタン] > [+新しいボタンの作成]をクリックしてください。
- ボタン名を入力し、表示ページを選択して、[カスタム関数の作成]を選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「poId」を入力し、値として「P発注書のID」を選択してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
- [自分のボタンを作成]ページで、[保存]をクリックしてください。
Script:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("Invoices", paramap);
return "Invoice created successfully";受注書から発注書を作成
カスタム関数の種類:ボタン
カスタム関数の詳細:受注書のデータから発注書を生成できます。これは、商談が受注すると判断した場合に役立ちます。
設定方法:
ボタンの配置:ボタンは、[受注書]タブの[表示]ページに配置する必要があります。
引数の関連付け:この処理を設定するには- [設定] > [カスタマイズ] > [タブ] > [受注書] > [リンクとボタン] > [+新しいボタンの作成]をクリックしてください。
- ボタン名を入力し、表示ページを選択して、[カスタム関数の作成]を選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「soId」を入力し、値として「受注書のID」を選択してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
- [自分のボタンを作成]ページで、[保存]をクリックしてください。
Script:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet=ifnull(respMap.get("product"),"");
productList=productDet.toJSONList();
pdlist=List();
for each eachProd in productList
{
eachProdDet=eachProd.toMap();
productDesc=ifnull(eachProdDet.get("Product Description"),"");
quantity=ifnull(eachProdDet.get("Quantity"),"0");
listPrice=(ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal=(ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount=(ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total=(ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId=ifnull(eachProdDet.get("Product Id"),"");
linetax=(ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp=map();
mp.put("Product Id",productId);
mp.put("Quantity",quantity);
mp.put("List Price",listPrice);
mp.put(("Discount"),linediscount);
mp.put("Total",total);
mp.put("Tax",linetax);
mp.put("Net Total",netTotal);
pdlist.add(mp);
}
paramap=map();
paramap.put("Products",pdlist);
paramap.put("Subject",ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID",ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions",ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description",ifnull(respMap.get("Description"),""));
paramap.put("Tax",(ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment",(ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"),(ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total",(ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total",(ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);
return "Po created successfully";[見込み客]タブまたは[連絡先]タブから一斉メールを送信
カスタム関数の種類:ボタン
カスタム関数の詳細:ボタンをクリックするのみで、[見込み客]タブまたは[連絡先]タブのリストビューページから、複数のデータにメールを送信できます。
設定方法:
ボタンの配置:ボタンは、[見込み客]タブまたは[連絡先]タブの[表示]ページに配置する必要があります。
引数の関連付け:この処理を設定するには- [設定] > [カスタマイズ] > [タブ] > [見込み客] > [リンクとボタン] > [+新しいボタンの作成]をクリックしてください。
- ボタン名を入力し、リストビューページを選択して、[カスタム関数の作成]を選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「leadId」を入力し、値として「見込み客のID」を選択してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
- [自分のボタンを作成]ページで、[保存]をクリックしてください。
Script:
leadIdsList = input.leadId.toList("|||");
for each leadIdStr in leadIdsList
{
resp = zoho.crm.getRecordById("Leads", leadIdStr.toLong());
email = ifnull(resp.get("Email"),"");
sendmail
(
To : email
From : zoho.adminuserid
Subject : "Subject of the email"
Message : "This is the message from Function send mail"
)
}
return "LeadID" + input.leadId;リストビューページでの項目の更新とメールの送信
カスタム関数の種類:ボタン
カスタム関数の詳細:ボタンが1つあれば、複数のデータを更新し、同時にそれらのデータにメールを送信できます。もちろん、カスタム関数も使用します。
設定方法:
ボタンの配置:ボタンは、[カスタム]タブの[リストビュー]ページに配置する必要があります。
引数の関連付け:この処理を設定するには- [設定] > [カスタマイズ] > [タブ] > [カスタムタブ] > [リンクとボタン] > [+新しいボタンの作成]をクリックしてください。
- ボタン名を入力し、ビューページを選択して、[カスタム関数の作成]を選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「custommoduleId」を入力し、値として「カスタムタブのID」を選択してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
- [自分のボタンを作成]ページで、[保存]をクリックしてください。
Script:
IdsList = input.Id.toList("|||");
for each IdStr in IdsList
{
resp = zoho.crm.getRecordById("CustomModule1", IdStr.toLong());
customMap = map();
customMap.put("Record Status", "Approve");
updateResponse = zoho.crm.updateRecord("CustomModule1", IdStr, customMap);
email = ifnull(resp.get("Email"),"");
sendmail
(
To : email
From : zoho.adminuserid
Subject : "Approval Email"
Message : " )
}
return "Success";
ワークフロー型のカスタム関数
見積書の手数料の計算
カスタム関数の種類:ワークフロー
カスタム関数の詳細:見積書の全商品から発生する手数料の合計を、[見積書]ページに表示できます。これにより、手動で計算しなくても、手数料の合計金額を簡単に確認できます。
設定方法:[見積書]タブの各商品の手数料合計を自動で更新するには、このカスタム関数を適切なワークフロールールに関連付ける必要があります。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「見積書」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「quoteId」を入力し、値として「見積書のID」を選択してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
quoteIdStr = input.quoteId.toString();
quoteMap = zoho.crm.getRecordById("Quotes", input.quoteId);
productDet = ifnull(quoteMap.get("product"),"");
productList = productDet.toJSONList();
value = 0.0;
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
qty = (ifnull(eachProdDet.get("Quantity"),"0")).toLong();
productId = ifnull(eachProdDet.get("Product Id"),"");
proDetails = zoho.crm.getRecordById("Products", productId.toLong());
commission = (ifnull(proDetails.get("Commission Rate"),"0.0")).toDecimal();
value = (value + commission * qty);
}
params = map(); params.put("Total Commission", value);
updateResp = zoho.crm.updateRecord("Quotes", quoteIdStr, params);商品ライン品目の税金の計算
カスタム関数の種類:ワークフロー
カスタム関数の詳細:すべての商品の税金を計算し、[請求書]タブに表示できます。
設定方法:請求書の各商品の税金を計算するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「請求書」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「invoiceId」を入力し、値として「請求書のID」を選択してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
invoiceIdStr = input.invoiceId.toString();
invoiceMap = zoho.crm.getRecordById("Invoices", input.invoiceId);
productDet = ifnull(invoiceMap.get("product"),"");
TotalTax = (ifnull(invoiceMap.get("Tax"),"0.0")).toDecimal();
TotalAdjustment = (ifnull(invoiceMap.get("Adjustment"),"0.0")).toDecimal();
TotalDiscount = (ifnull(invoiceMap.get(("Discount")),"0.0")).toDecimal();
productList = productDet.toJSONList();
sumPrice = 0.0;
price = 0.0;
value = 0.0;
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
discount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
proDetails = zoho.crm.getRecordById("Products", productId.toLong());
Taxvalue = ifnull(proDetails.get("Taxes"),"");
if (Taxvalue == "VAT")
{
value = 12.5;
price = (price + total + 12.5 - discount);
}
else
{
if (Taxvalue == "Surcharge")
{
value = 0.625;
price = (price + total + 0.625 - discount);
}
else
{
value = 12.625;
price = (price + total + 0.625 + 12.5 - discount);
}
}
mp = map();
mp.put("Product Id", productId);
mp.put("Tax", value);
mp.put("Net Total", price);
pdlist.add(mp);
sumPrice = (sumPrice + price.toDecimal());
}
grandPrice = (sumPrice - TotalDiscount + TotalAdjustment + TotalTax);
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Sub Total", sumPrice);
paramap.put("Grand Total", grandPrice);
updateResp = zoho.crm.updateRecord("Invoices", invoiceIdStr, paramap);見込み客を別のタブのデータに変換
カスタム関数の種類:ワークフロー
カスタム関数の詳細:見込み客を別のタブ([取引先]、[連絡先]、[商談]など)のデータに自動変換できます。
設定方法:見込み客を取引先や連絡先などへ自動変換するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「見込み客」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「leadID」を、値に「見込み客のID」を入力してください。
- [+引数の追加]をクリックし、名前に「Authtoken」を入力してください。
- [カスタム値の入力]をクリックし、ボックスにCRMの認証トークンを入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
注:
変換後に見込み客データを削除しない場合は、スクリプトの最後の行をコメントしてください。
Script:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Leads", leadIdLong);
first = ifnull(leadDetails.get("First Name"),"");
last = ifnull(leadDetails.get("Last Name"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Account Name"), ifnull(leadDetails.get("Company"),""));
AcccountMap.put("Annual Revenue", ifnull(leadDetails.get("Annual Revenue"),""));
AcccountMap.put("Billing City", ifnull(leadDetails.get("City"),""));
AcccountMap.put("Billing Country", ifnull(leadDetails.get("Country"),""));
AcccountMap.put("Description", ifnull(leadDetails.get("Description"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Industry", ifnull(leadDetails.get("Industry"),""));
AcccountMap.put("Employees", ifnull(leadDetails.get("No of Employees"),""));
AcccountMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
AcccountMap.put("Rating", ifnull(leadDetails.get("Rating"),""));
AcccountMap.put("Billing State", ifnull(leadDetails.get("State"),""));
AcccountMap.put("Billing Street", ifnull(leadDetails.get("Street"),""));
AcccountMap.put("Billing Code", ifnull(leadDetails.get("Zip Code"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Accounts"), AcccountMap);
newaccountId = (AccountCreate).get("Id");
ContactMap = map();
ContactMap.put("First Name", ifnull(leadDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(leadDetails.get("Last Name"),""));
ContactMap.put("Mailing City", ifnull(leadDetails.get("City"),""));
ContactMap.put("Mailing Country", ifnull(leadDetails.get("Country"),""));
ContactMap.put("Mailing State", ifnull(leadDetails.get("State"),""));
ContactMap.put("Mailing Street", ifnull(leadDetails.get("Street"),""));
ContactMap.put("Mailing Zip", ifnull(leadDetails.get("Zip Code"),""));
ContactMap.put("Description", ifnull(leadDetails.get("Description"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Title", ifnull(leadDetails.get("Title"),""));
ContactMap.put("Email", ifnull(leadDetails.get("Email"),""));
ContactMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
ContactMap.put("Mobile", ifnull(leadDetails.get("Mobile"),""));
ContactMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
ContactMap.put("Secondary Email", ifnull(leadDetails.get("Secondary Email"),""));
ContactMap.put("Skype ID", ifnull(leadDetails.get("Skype ID"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contacts", ContactMap);
newcontactId = ContactCreate.get("Id");
PotentialMap = map();
PotentialMap.put("Potential Name", name);
PotentialMap.put("City", ifnull(leadDetails.get("City"),""));
PotentialMap.put("Country", ifnull(leadDetails.get("Country"),""));
PotentialMap.put("State", ifnull(leadDetails.get("State"),""));
PotentialMap.put("Street", ifnull(leadDetails.get("Street"),""));
PotentialMap.put("Zipcode", ifnull(leadDetails.get("Zip Code"),""));
PotentialMap.put("Description", ifnull(leadDetails.get("Description"),""));
PotentialMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
PotentialMap.put("ACCOUNTID", newaccountId);
PotentialMap.put("CONTACTID", newcontactId);
PotentialCreate = zoho.crm.create("Potentials", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId);カスタムタブからの連絡先の作成
カスタム関数の種類:ワークフロー
カスタム関数の詳細:任意のカスタムタブにある情報から、直接、連絡先のデータを自動作成できます。
設定方法:カスタムタブから連絡先を自動作成するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「カスタムタブ」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「customId」を、値に「カスタムタブのID」を入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
CustomModuleDetails = zoho.crm.getRecordById("CustomModule1", input.customId);
ContactMap = map();
ContactMap.put("First Name", ifnull(CustomModuleDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(CustomModuleDetails.get("Last Name"),""));
ContactMap.put("Email", ifnull(CustomModuleDetails.get("Email"),""));
ContactMap.put("Date", ifnull(CustomModuleDetails.get("Date"),""));
ContactMap.put("Birth Date", ifnull(CustomModuleDetails.get("Birth Date"),""));
ContactMap.put("Mailing Street", ifnull(CustomModuleDetails.get("Mailing Street"),""));
ContactMap.put("Mailing City", ifnull(CustomModuleDetails.get("Mailing City"),""));
ContactMap.put("Mailing State", ifnull(CustomModuleDetails.get("Mailing State"),""));
ContactMap.put("Mailing Zip", ifnull(CustomModuleDetails.get("Mailing Zip"),""));
ContactMap.put("Phone", ifnull(CustomModuleDetails.get("Phone"),""));
ContactMap.put("SMOWNERID", ifnull(CustomModuleDetails.get("SMOWNERID"),""));
ContactMap.put("Company Name", ifnull(CustomModuleDetails.get("Company Name"),""));
ContactMap.put("Industry Type", ifnull(CustomModuleDetails.get("Industry Type"),""));
ContactCreate = zoho.crm.create("Contacts", ContactMap);カスタムタブからカスタムタブを作成
カスタム関数の種類:ワークフロー
カスタム関数の詳細:別のカスタムタブのデータから、新しいカスタムタブを作成できます。これは、タブからタブへ情報を転送する必要がある場合に、特に便利です。ユーザーの代わりにカスタム関数が実行してくれます。
設定方法:カスタムタブのデータが含まれる別のカスタムタブを自動作成するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「カスタムタブ」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「CustommoduleId」を、値に「カスタムタブのID」を入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
CustommoduleDetails = zoho.crm.getRecordById("CustomModule1", input.CustommoduleId);
createMap = map();
createMap.put("CustomModule2 Name", ifnull(CustommoduleDetails.get("Custom Name"),""));
createMap.put("SMOWNERID", ifnull(CustommoduleDetails.get("SMOWNERID"),""));
createMap.put("Phone", ifnull(CustommoduleDetails.get("Phone"),""));
createMap.put("Email", ifnull(CustommoduleDetails.get("Email"),""));
createCustomModule = zoho.crm.create("CustomModule2", createMap);フォローアップ活動の作成
カスタム関数の種類:ワークフロー
カスタム関数の詳細:連絡先へのフォローアップ活動を作成できます。これは使用できるカスタム関数の中でも、最も重要で便利なカスタム関数の1つです。多くの担当者の作業を軽減できます。
設定方法:選択した連絡先データのフォローアップ活動を自動作成するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「連絡先」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「contactId」を、値に「連絡先のID」を入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
contactIdStr = input.contactId.toString();
TaskDetails = zoho.crm.getRelatedRecords("Tasks", "Contacts", contactIdStr);
for each Task in TaskDetails
{
taskMap = map();
taskMap.put("Task Owner", ifnull(Task.get("Task Owner"),""));
taskMap.put("Subject", (Task.get("Subject")) + " Followup ");
taskMap.put("Due Date", ifnull(Task.get("Due Date"),""));
taskMap.put("Status", ifnull(Task.get("Status"),""));
taskMap.put("Priority", ifnull(Task.get("Priority"),""));
taskMap.put("SMOWNERID", ifnull(Task.get("SMOWNERID"),""));
taskMap.put("CONTACTID", contactIdStr);
taskMap.put("SEID", ifnull(Task.get("RELATEDTOID"),""));
taskMap.put("SEMODULE", ifnull(Task.get("SEMODULE"),""));
createTask = zoho.crm.create("Tasks", taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Events", "Contacts", contactIdStr);
for each Event in EventDetails
{
eventMap = map();
eventMap.put("Subject", (Event.get("Subject")) + " Followup ");
eventMap.put("SMOWNERID", ifnull(Event.get("SMOWNERID"),""));
eventMap.put("Start DateTime", (ifnull(Event.get("Start DateTime"),"")).toTime());
eventMap.put("End DateTime", (ifnull(Event.get("End DateTime"),"")).toTime());
eventMap.put("CONTACTID", contactIdStr);
eventMap.put("SEID", ifnull(Event.get("RELATEDTOID"),""));
eventMap.put("SEMODULE", ifnull(Event.get("SEMODULE"),""));
createEvent = zoho.crm.create("Events", eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Calls", "Contacts", contactIdStr);
for each Call in CallDetails
{
Callstatus = Call.get("Call Status");
if ((Callstatus == "Scheduled") || (Callstatus == "Overdue"))
{
callMap = map();
callMap.put("Subject", (Call.get("Subject")) + " Followup ");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Call Type", ifnull(Call.get("Call Type"),""));
callMap.put("whichCall", "ScheduleCall");
callMap.put("Call Start Time", ifnull(Call.get("Call Start Time"),""));
callMap.put("Call Duration", ifnull(Call.get("Call Duration"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Calls", callMap);
}
else
{
callMap = map();
callMap.put("Subject", (Call.get("Subject")) + " Followup ");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Call Type", ifnull(Call.get("Call Type"),""));
callMap.put("Call Start Time", ifnull(Call.get("Call Start Time"),""));
callMap.put("Call Duration", ifnull(Call.get("Call Duration"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Calls", callMap);
}
}発注書から請求書を作成
カスタム関数の種類:ワークフロー
カスタム関数の詳細:このカスタム関数を定義することで、発注書の請求書を自動生成できます。
設定方法:請求書を自動作成するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「発注書」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「poId」を、値に「発注書のID」を入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("Invoices", paramap);すべての関連データを含む連絡先から見込み客を作成
カスタム関数の種類:ワークフロー
カスタム関数の詳細:連絡先データから、見込み客をすぐに作成できます。これは、既知の相手と新しい商談を進める場合に、非常に役立ちます。
設定方法:連絡先から見込み客データを自動作成するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「連絡先」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「contactId」を、値に「連絡先のID」を入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
contactIdStr = input.contactId.toString();
contactDetails = zoho.crm.getRecordById("Contacts", input.contactId);
leadMap = map();
leadMap.put("Last Name", ifnull(contactDetails.get("Last Name"),""));
leadMap.put("First Name", ifnull(contactDetails.get("First Name"),""));
leadMap.put("SMOWNERID", ifnull(contactDetails.get("SMOWNERID"),""));
leadMap.put("Email", ifnull(contactDetails.get("Email"),""));
leadMap.put("Third Email", ifnull(contactDetails.get("Third Email"),""));
leadMap.put("Secondary Email", ifnull(contactDetails.get("Second Email"),""));
leadMap.put("Phone", ifnull(contactDetails.get("Phone"),""));
leadMap.put("Lead Status", ifnull(contactDetails.get("Contact Status"),""));
leadMap.put("Created On", ifnull(contactDetails.get("Created On"),""));
leadMap.put("Notes", ifnull(contactDetails.get("Notes"),""));
leadMap.put("Skype ID", ifnull(contactDetails.get("Skype ID"),""));
leadMap.put("Wechat ID", ifnull(contactDetails.get("Wechat ID"),""));
createLead = zoho.crm.create("Leads", leadMap);
id = createLead.get("Id");
contactRelNotes = zoho.crm.getRelatedRecords("Notes", "Contacts", contactIdStr);
countVal = 0;
for each ele in contactRelNotes
{
countVal = (countVal + 1);
notemap = map();
notemap.put("entityId", id);
notemap.put("Note Title", ifnull(ele.get("Title")," "));
notemap.put("Note Content", ifnull(ele.get("Note Content")," "));
notecreate = zoho.crm.create("Notes", notemap);
}
TaskDetails = zoho.crm.getRelatedRecords("Tasks", "Contacts", contactIdStr);
for each ele in TaskDetails
{
TaskId = ele.get("ACTIVITYID");
taskMap = map();
taskMap.put("SEID", id);
taskMap.put("SEMODULE", "CustomModule2");
UpdateTask = zoho.crm.updateRecord("Tasks", TaskId, taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Events", "Contacts", contactIdStr);
for each ele in EventDetails
{
eventId = ele.get("ACTIVITYID");
eventMap = map();
eventMap.put("SEID", id);
eventMap.put("SEMODULE", "CustomModule2");
UpdateEvent = zoho.crm.updateRecord("Events", eventId, eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Calls", "Contacts", contactIdStr);
for each ele in CallDetails
{
callId = ele.get("ACTIVITYID");
callMap = map();
callMap.put("SEID", id);
callMap.put("SEMODULE", "CustomModule2");
UpdateCall = zoho.crm.updateRecord("Calls", callId, callMap);
}受注書から発注書を作成
カスタム関数の種類:ワークフロー
カスタム関数の詳細:[受注書]タブから、発注書を生成できます。通常、この機能は商談が確定された後に使用します。
設定方法:[受注書]タブから発注書データを自動作成するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「受注書」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「soId」を、値に「受注書のID」を入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);取引先の項目の更新時に、関連する連絡先の項目をすべて更新
カスタム関数の種類:ワークフロー
カスタム関数の詳細:このカスタム関数を使用すると、[取引先]タブでデータが更新された場合に、そのデータの関連項目をすべて更新できます。
設定方法:関連する連絡先項目をすべて自動更新するには、このカスタム関数を適切なワークフロールールに関連付けてください。
- [設定] > [自動化] > [処理] > [カスタム関数] > [+カスタム関数の設定] > [独自のカスタム関数の記述]をクリックし、「取引先」として関連付けるタブを選択してください。
- カスタム関数の名前を入力し、[フリーフロースクリプト]をクリックしてください。
- 下記のコードスクリプトをコピーしてください。
- [引数の編集]をクリックしてください。
- 名前に「acctId」を、値に「取引先のID」を入力してください。
- [+引数の追加]をクリックし、名前として「Type」を入力してください。
- 値に「取引先の種類」を入力してください。
- [完了]をクリックしてください。
- コードスクリプトを確認し、[保存]をクリックしてください。
Script:
accountIdStr = input.accountId.toString();
relatedcontacts = zoho.crm.getRelatedRecords("Contacts", ("Accounts"), accountIdStr);
info relatedcontacts;
for each ele in relatedcontacts
{
contactId = ifnull(ele.get("CONTACTID"),"");
mp = map();
mp.put("Contact Type", input.type );
update = zoho.crm.updateRecord("Contacts", contactId, mp);
info mp;
info update;
}