ProjectsのCodeXスクリプト

ProjectsのCodeXスクリプト

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

Zoho Projects の CodeX スクリプトは、高度な条件ロジックスクリプトで、特定のルールや検証を強制できます。ユーザーは、プロジェクトをいつ・どのように作成、編集、またはステータス変更できるかを制御できます。これにより、コンプライアンスとプロセスの整合性が向上します。

Info

ユースケース:

新しいプロジェクトを作成

所有者、日付、予算、カスタム項目などのプロジェクト情報を設定した新しいプロジェクトを作成します。
コード:
  1. function main() {
  2. try {
  3. const layoutId = current.データ.layoutId;
  4. const moduleId = current.データ.moduleId;
  5. const layout = client.getLayoutById(layoutId, moduleId);

  6. const newProject = new データ(layout);
  7. newProject.name = 'Explore Zoho ';

  8. const projectOwnerId = variables.projectowner.value;

  9. const user1 = variables.user1.value; // user1 の ZPUID は variables に保存されています
  10. const user2 = variables.user2.value; // user2 の ZPUID は variables に保存されています

  11. const addedProject = client.save(newProject);
  12. addedProject.name = 'Explore Zoho Projects';
  13. addedProject.説明 =
  14. 'Zoho Projects の機能を確認するプロジェクトです';
  15. addedProject.owner = projectOwnerId;
  16. addedProject.status = '242942000000027095'; // レイアウトに基づくステータス ID。こちらの 242942000000040005 は「進行中」ステータスに対応します
  17. addedProject.start_date = '2025-12-08';
  18. addedProject.end_date = '2025-12-25';
  19. addedProject.project_group = '242942000000025001'; // プロジェクトグループ ID
  20. addedProject.completed_time = '2025-12-31T00:00:00+05:30'; // 完了日時は ISO の日付・時刻形式で指定する必要があります
  21. addedProject.currency = 'INR'; // 通貨コード
  22. addedProject.budget_type = '1'; // 予算タイプ
  23. addedProject.hourly_budget = '5.000';
  24. addedProject.hourly_budget_threshold = '3.000';
  25. addedProject.cost_budget = '5600';
  26. addedProject.cost_budget_threshold = '5000';
  27. addedProject.revenue_budget = '4000';
  28. addedProject.billing_method = '1'; // 請求方法。IDE の BillingMethod 列挙型を参照してください。
  29. addedProject.rate_per_hour = '800';
  30. addedProject.cost_per_hour = '600';

  31. addedProject.single_line_text = 'Sample Single Line Text';
  32. addedProject.pick_list = 'Option 1'; // レイアウトの選択リストのオプションに基づく値
  33. addedProject.multi_line_text =
  34. 'Lorem sunt Duis dolor laborum \n eu magna incididunt ipsum qui sit pariatur \n aute officia nisi irure nostrud sit commodo esse';
  35. addedProject.multi_select_field = ['Option 1', 'Option 2', 'Option 3']; // レイアウトの複数選択オプションに基づく値
  36. addedProject.user_pick_list_all_users = user1;
  37. addedProject.user_pick_list_select_roles = '242942000000082031'; // 組織ロールに基づくロール ID
  38. addedProject.user_pick_list_selected_users = user2;
  39. addedProject.multi_user_picklist_all_users = [user1, user2];
  40. addedProject.multi_user_picklist_selected_roles = [
  41. '242942000000082031',
  42. '242942000000082001',
  43. ];
  44. addedProject.multi_user_picklist_selected_users = [user1, user2];
  45. addedProject.date_field = '2025-12-08'; // 日付項目の値(ISO 日付形式)
  46. addedProject.checkbox_field = 'true';
  47. addedProject.currency_field = '4300';
  48. addedProject.percentage_field = '25'; // % 記号を含まないパーセンテージ値
  49. addedProject.decimal_field = '130.24';
  50. addedProject.number_field = '430020';
  51. addedProject.email_field = 'vishal@yahoo.com';
  52. addedProject.phone_field = '1234567890';
  53. addedProject.url_field = 'https://zlyker.com/';
  54. client.save(addedProject);
  55. } catch (err) {
  56. console.log(err);
  57. throw new ScriptError(err);
  58. }
  59. }

新しいエンティティを作成

任意のタブで、名前項目だけが設定された空のデータを作成します。デバッグや検証用途に使用します。
コード:
  1. function main() {

  2. try {

  3. let layout = client.getLayoutById(current.データ.layoutId, current.データ.moduleId);

  4. let データ = new データ(layout);

  5. データ.name = 'created project from script'

  6. client.save(データ);

  7. } catch (err) {

  8. throw new ScriptError(err);

  9. }

  10. }
  11.  

アーカイブ済みプロジェクトでのタスク編集を制限

関連付けられたプロジェクトがアーカイブされている場合、タスクの編集を制限します。
コード:
  1. function main() {
  2. let task = current.データ;
  3.  
  4. let projectId = task.projectId;
  5. const moduleItr = client.getModules(0, 10);
  6. //projects タブ id: 5000000000380
  7. let moduleId;
  8. console.log(JSON.stringify(current.affectedFields));
  9. while(moduleItr.hasNext()) {
  10. let moduleObj = moduleItr.next();
  11. if(moduleObj.name == 'Projects') {
  12. moduleId = moduleObj.id;
  13. }
  14.         
  15. }
  16. let project = client.getRecordById(moduleId, projectId);
  17.  
  18. if(project._status == 'archived') {
  19. throw new ScriptError('アーカイブ済みプロジェクトは編集できません');
  20. }
  21.  
  22.  
  23. }
  24.  
プロジェクトのセットアップで、CodeX の動作についてアイデアがありますか?コメント欄にユースケースをお寄せください。

関連記事
ヘルプに戻る
CodeX スクリプト(Projects)