如何使用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
相关产品推荐
相关产品推荐

