SuiteScript 2.0:我使用 context.response.writeFile(file) 将数据导出到 excel,但它是 return String

SuiteScript 2.0 : i use context.response.writeFile(file) to export data to excel,but it return String

我添加一个button.when我点击按钮,它会执行这个功能。

function onRequest(context) {
    log.debug('exportTest');
    var stringInput = 'Hello World\nHello World';
    var base64EncodedString = encode.convert({
        string : stringInput,
        inputEncoding : encode.Encoding.UTF_8,
        outputEncoding : encode.Encoding.BASE_64
    });
    var fileUrl = file.create({
        name : 'test.txt',
        fileType : file.Type.PLAINTEXT,
        contents : base64EncodedString
    });
    log.debug('fileUrl',fileUrl);
    context.response.writeFile({
        file : fileUrl
    });
}

我想获取一个名为 'test.txt' 的文件,但它 return 是一个字符串。 enter image description here

它似乎返回的正是您所要求的 - 即 'Hello World\nHello World' 编码为 base64 字符串。要显示原始文本,您需要再次解码,或者对于此示例,您可以跳过编码,因为它只是文本。

我现在知道怎么做了。 1.add 一个按钮

function beforeLoad(scriptContext) {
    if(scriptContext.type == scriptContext.UserEventType.VIEW){
        var form = scriptContext.form;
        form.addButton({
            id: "custpage_export_test",
            label: "Export Test",
            functionName: 'exportExcel'
        });
        form.clientScriptModulePath = './export_test.js';            
    }
}

2.the export_test.js

function exportExcel(context) {
    var suiteletURL = url.resolveScript({
        scriptId:'customscript_export_excel',
        deploymentId:'customdeploy_export_excel',
        params:context
    })
    var downloadLink = document.createElement('a');
    downloadLink.href = suiteletURL;
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
}

3.the export_excel.js

function onRequest(context) {
    var response = context.response;
    log.debug('exportTest');
    var stringInput = 'Hello World\nHello World';
    var excelFile = file.create({
        name: 'test.txt',
        fileType: file.Type.PLAINTEXT,
        contents: stringInput
    });
    response.writeFile(excelFile);
}