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

如何在NetSuite Suitelet PDF中加载Issue列表数据?

在SuiteScript 1.0 Suitelet中加载Issue列表并生成PDF表格

核心步骤:搜索Issue数据 + 构建PDF表格

1. 搜索Issue记录

用nlapiSearchRecord获取Issue数据,可按需添加过滤条件和返回字段:

// 定义过滤条件(示例:排除已关闭的Issue)
var filters = [
    new nlobjSearchFilter('status', null, 'noneof', ['closed'])
];

// 指定需要返回的基本字段
var columns = [
    new nlobjSearchColumn('title'),       // Issue标题
    new nlobjSearchColumn('createddate'), // 创建日期
    new nlobjSearchColumn('status'),      // 状态
    new nlobjSearchColumn('priority'),    // 优先级
    new nlobjSearchColumn('assigned')     // 经办人(可选)
];

// 执行搜索,返回结果集
var issueResults = nlapiSearchRecord('issue', null, filters, columns);

2. 构建PDF表格内容

基于搜索结果生成HTML格式的表格,再转换为PDF:

// 初始化PDF的HTML结构
var pdfHtml = '<html><body style="font-family: Arial, sans-serif;">';
pdfHtml += '<h2>Issue基本信息列表</h2>';
pdfHtml += '<table width="100%" border="1" cellpadding="6" cellspacing="0" style="border-collapse: collapse;">';

// 添加表头
pdfHtml += '<thead><tr style="background-color: #f5f5f5;">';
pdfHtml += '<th>标题</th><th>创建日期</th><th>状态</th><th>优先级</th><th>经办人</th>';
pdfHtml += '</tr></thead><tbody>';

// 循环填充表格数据
if (issueResults) {
    for (var i = 0; i < issueResults.length; i++) {
        var issue = issueResults[i];
        pdfHtml += '<tr>';
        pdfHtml += '<td>' + issue.getValue('title') + '</td>';
        // 格式化日期为易读格式
        pdfHtml += '<td>' + nlapiDateToString(new Date(issue.getValue('createddate')), 'date') + '</td>';
        // getText获取字段显示值(而非内部ID)
        pdfHtml += '<td>' + issue.getText('status') + '</td>';
        pdfHtml += '<td>' + issue.getText('priority') + '</td>';
        pdfHtml += '<td>' + issue.getText('assigned') + '</td>';
        pdfHtml += '</tr>';
    }
} else {
    pdfHtml += '<tr><td colspan="5" style="text-align: center;">暂无匹配的Issue记录</td></tr>';
}

// 闭合HTML标签
pdfHtml += '</tbody></table></body></html>';

3. 整合到Suitelet并返回PDF

在Suitelet的onRequest函数中完成数据搜索、PDF构建,最终返回给用户:

function issuePdfSuitelet(request, response) {
    if (request.getMethod() === 'GET') {
        // 步骤1:搜索Issue数据
        var filters = [new nlobjSearchFilter('status', null, 'noneof', ['closed'])];
        var columns = [
            new nlobjSearchColumn('title'),
            new nlobjSearchColumn('createddate'),
            new nlobjSearchColumn('status'),
            new nlobjSearchColumn('priority'),
            new nlobjSearchColumn('assigned')
        ];
        var issueResults = nlapiSearchRecord('issue', null, filters, columns);

        // 步骤2:构建PDF HTML
        var pdfHtml = '<html><body style="font-family: Arial, sans-serif;">';
        pdfHtml += '<h2>Issue基本信息列表</h2>';
        pdfHtml += '<table width="100%" border="1" cellpadding="6" cellspacing="0" style="border-collapse: collapse;">';
        pdfHtml += '<thead><tr style="background-color: #f5f5f5;">';
        pdfHtml += '<th>标题</th><th>创建日期</th><th>状态</th><th>优先级</th><th>经办人</th>';
        pdfHtml += '</tr></thead><tbody>';

        if (issueResults) {
            for (var i = 0; i < issueResults.length; i++) {
                var issue = issueResults[i];
                pdfHtml += '<tr>';
                pdfHtml += '<td>' + issue.getValue('title') + '</td>';
                pdfHtml += '<td>' + nlapiDateToString(new Date(issue.getValue('createddate')), 'date') + '</td>';
                pdfHtml += '<td>' + issue.getText('status') + '</td>';
                pdfHtml += '<td>' + issue.getText('priority') + '</td>';
                pdfHtml += '<td>' + issue.getText('assigned') + '</td>';
                pdfHtml += '</tr>';
            }
        } else {
            pdfHtml += '<tr><td colspan="5" style="text-align: center;">暂无匹配的Issue记录</td></tr>';
        }

        pdfHtml += '</tbody></table></body></html>';

        // 生成PDF文件并返回
        var pdfFile = nlapiCreateFile('Issue_Report_' + new Date().toISOString().slice(0,10) + '.pdf', 'PDF', pdfHtml);
        response.setContentType('PDF');
        response.write(pdfFile.getValue());
    }
}

注意事项

  • 权限检查:确保Suitelet的执行角色拥有Issue记录的查看权限,否则无法获取数据
  • 字段扩展:可根据需求添加更多字段(如department部门、description描述),只需在columns数组中新增对应nlobjSearchColumn
  • 过滤逻辑:可修改filters数组添加更精准的条件(如按创建时间范围、特定经办人过滤)
  • 日期格式化:使用nlapiDateToString将原始日期值转换为用户友好的格式

内容的提问来源于stack exchange,提问作者Valeria Murguía

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:53:20