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

通过SuiteScript实现NetSuite数据集/工作簿自动导出为CSV

解决方案:已保存搜索与NetSuite数据集/工作簿版本衔接实现

核心逻辑

要实现已保存搜索(含SuiteQL查询)与数据集/工作簿的版本衔接,核心是建立版本映射关系、自动化同步机制和可追溯的文件管理规范,确保每次生成的CSV文件能对应到源查询版本,同时方便团队识别使用。

具体实现步骤

1. 制定版本标识与映射规则

  • 给每个已保存搜索/SuiteQL查询分配唯一基础ID,比如SRCH-1304(对应原脚本SEARCH_ID=1304)、SQL-ITEM(对应示例Item查询)
  • 版本命名规范:[基础ID]-v[版本号]-[日期].csv,例:SRCH-1304-v1.2-20240520.csv
  • 创建NetSuite自定义记录(如自定义记录:查询版本映射),存储关联信息:源查询ID、版本号、文件柜文件ID、生成时间、更新说明

2. 优化脚本实现版本化生成与关联

已保存搜索脚本(新增版本管理)

/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/
define(['N/task', 'N/record'],
function(task, record) {
    // 基础配置
    var SEARCH_ID = 1304;
    var FOLDER_ID = 123; // 替换为目标文件柜文件夹ID
    var BASE_ID = 'SRCH-1304';
    var CURRENT_VERSION = '1.2'; // 可从自定义记录读取或手动维护

    function execute(scriptContext) {
        // 生成带版本标识的文件名
        var dateStr = new Date().toISOString().slice(0,10).replace(/-/g,'');
        var fileName = `${BASE_ID}-v${CURRENT_VERSION}-${dateStr}.csv`;

        // 创建搜索任务
        var searchTask = task.create({
            taskType: task.TaskType.SEARCH
        });
        searchTask.savedSearchId = SEARCH_ID;
        searchTask.fileName = fileName;
        searchTask.folderId = FOLDER_ID;
        var searchTaskId = searchTask.submit();

        // 创建版本映射记录(实际场景可先检查任务完成状态,此处简化)
        var mappingRec = record.create({
            type: 'customrecord_query_version_map', // 替换为你的自定义记录ID
            isDynamic: true
        });
        mappingRec.setValue({fieldId: 'custrecord_source_id', value: SEARCH_ID});
        mappingRec.setValue({fieldId: 'custrecord_base_id', value: BASE_ID});
        mappingRec.setValue({fieldId: 'custrecord_version', value: CURRENT_VERSION});
        mappingRec.setValue({fieldId: 'custrecord_create_date', value: new Date()});
        // 任务完成后可通过task.Status获取实际文件ID并更新此字段
        mappingRec.setValue({fieldId: 'custrecord_file_id', value: searchTask.fileId});
        mappingRec.save();
    }

    return {
        execute: execute
    };
});

SuiteQL脚本(新增版本管理)

/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/
define(['N/task', 'N/record'],
function(task, record) {
    // 基础配置
    var BASE_ID = 'SQL-ITEM';
    var CURRENT_VERSION = '2.0';
    var FOLDER_ID = 123; // 替换为目标文件柜文件夹ID
    var SUITEQL_QUERY = 'SELECT * from item';

    function execute(scriptContext) {
        // 生成带版本标识的文件名
        var dateStr = new Date().toISOString().slice(0,10).replace(/-/g,'');
        var fileName = `${BASE_ID}-v${CURRENT_VERSION}-${dateStr}.csv`;

        // 创建SuiteQL任务
        var mySuiteQLTask = task.create({
            taskType: task.TaskType.SUITE_QL
        });
        mySuiteQLTask.query = SUITEQL_QUERY;
        mySuiteQLTask.fileName = fileName;
        mySuiteQLTask.folderId = FOLDER_ID;
        var mySuiteQLTaskId = mySuiteQLTask.submit();

        // 创建版本映射记录
        var mappingRec = record.create({
            type: 'customrecord_query_version_map', // 替换为你的自定义记录ID
            isDynamic: true
        });
        mappingRec.setValue({fieldId: 'custrecord_source_type', value: 'SuiteQL'});
        mappingRec.setValue({fieldId: 'custrecord_base_id', value: BASE_ID});
        mappingRec.setValue({fieldId: 'custrecord_version', value: CURRENT_VERSION});
        mappingRec.setValue({fieldId: 'custrecord_create_date', value: new Date()});
        mappingRec.setValue({fieldId: 'custrecord_query_text', value: SUITEQL_QUERY});
        // 任务完成后更新实际文件ID
        mappingRec.setValue({fieldId: 'custrecord_file_id', value: mySuiteQLTask.fileId});
        mappingRec.save();
    }

    return {
        execute: execute
    };
});

3. 数据集/工作簿的版本关联

  • 数据集(Dataset):在数据集描述或自定义字段中填写对应基础ID+版本号(如关联查询:SRCH-1304-v1.2),数据源直接引用文件柜中对应版本的CSV文件
  • 工作簿(Workbook):在工作簿属性或工作表备注中注明关联的查询版本,确保团队打开时能明确数据源版本

4. 团队访问与版本追溯

  • 给团队分配文件柜目标文件夹的读取权限,允许访问所有版本CSV文件
  • 基于自定义记录创建已保存搜索,生成版本查询列表,展示所有查询版本、对应文件、生成时间,方便团队快速定位所需版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:21:49