You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Zoho Deluge将Zoho Desk工单列表导入邮件?

问题分析与修正方案

核心错误点

  • 条件判断语法完全错误:原脚本中if(is_first_shift=="Result": "success")这类写法不符合Deluge语法,布尔变量直接用if(is_first_shift)判断即可;且else后不能附加条件,第三个班次分支需调整为else if(is_third_shift)。
  • 跨天班次时间逻辑错误:第三班次(23:00-次日07:00)的判断不能用&&,因为当天23点后到次日7点分属两天,需改为(zoho.currenttime > third_shift_starts_at) || (zoho.currenttime < third_shift_ends_at)。
  • 工单筛选参数错误:第三班次的priority.name误写为"2nd Shift",应改为"3rd Shift";且未分配工单的筛选"technician": "null"需改为不带引号的null,符合API参数要求。
  • 邮件正文构建错误:原脚本直接拼接input_data(这是请求参数而非返回的工单列表),且字符串拼接缺少加号,导致语法错误;需从response中提取工单数据并格式化为可读内容。

修正后的完整脚本

url = ".../api/v3/requests/";
headers = {"authtoken":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"};

first_shift_starts_at = (zoho.currentdate + ' ' + '08:00:00').toDateTime();
first_shift_ends_at = (zoho.currentdate + ' ' + '16:00:00').toDateTime();
is_first_shift = zoho.currenttime > first_shift_starts_at && zoho.currenttime < first_shift_ends_at;

second_shift_starts_at = (zoho.currentdate + ' ' + '17:00:00').toDateTime();
second_shift_ends_at = (zoho.currentdate + ' ' + '22:00:00').toDateTime();
is_second_shift = zoho.currenttime > second_shift_starts_at && zoho.currenttime < second_shift_ends_at;

// 修正跨天班次判断逻辑
third_shift_starts_at = (zoho.currentdate + ' ' + '23:00:00').toDateTime();
third_shift_ends_at = (zoho.currentdate + ' ' + '07:00:00').toDateTime();
is_third_shift = (zoho.currenttime > third_shift_starts_at) || (zoho.currenttime < third_shift_ends_at);

// 修正条件判断语法
if(is_first_shift)
{
input_data = {
        "list_info": {
            "row_count": 250,
            "start_index": 1,
            "sort_field": "id",
            "sort_order": "asc",
            "get_total_count": true,
            "search_fields": {
                        "priority.name": "1st Shift",
                    "status.name": "Open",
                    "technician": null  // 修正为不带引号的null
                     }
                 }
              };
}
else if (is_second_shift)
{
input_data = {
        "list_info": {
            "row_count": 250,
            "start_index": 1,
            "sort_field": "id",
            "sort_order": "asc",
            "get_total_count": true,
            "search_fields": {
                        "priority.name": "2nd Shift",
                    "status.name": "Open",
                    "technician": null
                     }
                 }
              };
}
else if (is_third_shift)  // 修正else为else if
{
input_data = {
        "list_info": {
            "row_count": 250,
            "start_index": 1,
            "sort_field": "id",
            "sort_order": "asc",
            "get_total_count": true,
            "search_fields": {
                        "priority.name": "3rd Shift",  // 修正班次优先级
                    "status.name": "Open",
                    "technician": null
                     }
                 }
              };
}
else
{
// 处理非工作时段的默认逻辑,可根据需求调整
input_data = {
        "list_info": {
            "row_count": 250,
            "start_index": 1,
            "sort_field": "id",
            "sort_order": "asc",
            "get_total_count": true,
            "search_fields": {
                    "status.name": "Open",
                    "technician": null
                     }
                 }
              };
}

params = {"input_data": input_data};
response = invokeurl
[
    url: url
    type: POST 
    parameters: params
    headers: headers
];
info response;

// 从response中提取工单列表并格式化为邮件正文
emailSubject = "Unassigned Tickets";
emailBody = "These tickets are currently unassigned in the queue:\n\n";

// 假设response中包含"requests"数组,遍历生成列表
if(response.containskey("requests"))
{
    tickets = response.get("requests");
    for each ticket in tickets
    {
        ticketId = ticket.get("id");
        subject = ticket.get("subject");
        priority = ticket.get("priority").get("name");
        emailBody = emailBody + "- Ticket #" + ticketId + ": " + subject + " (Priority: " + priority + ")\n";
    }
}
else
{
    emailBody = emailBody + "No unassigned tickets found.";
}

emailBody = emailBody + "\n\nPlease make sure they are taken ASAP!";

sendmail
[
    from: <from_address>
    to:  <to_address>
    subject: emailSubject
    message: emailBody
]


returnObj = Collection();
returnObj.insert("result":"success");
returnObj.insert("message": "Update Notification Mail sent successfully");
return returnObj;   

额外说明

  • 需确认Zoho Desk API返回的结构是否包含requests数组,若结构不同需调整提取逻辑。
  • 邮件正文使用纯文本格式,若需HTML格式可将换行改为<br>并添加列表标签。

内容的提问来源于stack exchange,提问作者Wattson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:27:55