NetSuite SuiteScript 修改文件柜中的文件

问题描述 投票:0回答:6

NetSuite 文件柜中的文件需要更新(url 字段已更改)。我在该网站上找到了提到的文章,但没有执行请求的代码示例。它指示使用 nlapiLoadFile 和 nlapiSubmitFile 调用;有人可以帮忙提供代码示例吗?

链接: Netsuite Suitescript可以修改文件柜中的文件吗?

netsuite
6个回答
3
投票

是的,看起来有点奇怪。我发现的唯一方法是:

  1. 加载文件
  2. 使用以下命令创建文件句柄:
    • 将文件名设置为您想要的名称。
    • 将内容设置为想要的内容
  3. 设置文件夹并提交。

我已附上代码片段


    var 文件 = nlapiLoadFile(file_id);
    var content = file.getValue();
    content = '...输入您的内容...';
    file = nlapiCreateFile(file.getName(), '文件类型', 内容);
    file.setFolder(required_folder_id);
    nlapiSubmitFile(文件);

希望这有帮助。


3
投票

没有特殊的API函数来编辑现有文件,您可以获取现有文件的详细信息并创建具有相同详细信息的新文件,但仅更改数据字段并删除旧文件。

var start = function(request, response)
{
    var fileId = "107524";//get the existing file id
    var file = nlapiLoadFile(fileId);
    var data = file.getValue();
    var name = file.getName();
    var folderId = file.getFolder();
    var fileType = file.getType();
    nlapiDeleteFile(fileId);//delete the older file

    data += ",this is the appended data";//change the data
    var newFile = nlapiCreateFile(name, fileType, data);//create a new file with the same details
    newFile.setFolder(folderId);
    nlapiSubmitFile(newFile);//submit it
}

1
投票

您是指文件而不是字段吗?如果您使用 nlapiLoadFile(/path/file),则可以使用 getURL() 提供该文件的链接。


0
投票

NetSuite 没有编辑文件类型的 API。您必须加载原始文件,根据需要修改内容,然后通过在同一文件夹内创建具有相同文件名的新文件来提交该数据。这只是覆盖现有文件。

这是代码示例:

var original = nlapiLoadFile(FILE_ID_OR_FILE_PATH_IN_FILE_CABINET);
var originalContent = original.getValue(); //Return the value (base64 encoded for binary types) of the file

var updated = nlapiCreateFile(original.getName(), FILE_TYPE, UPDATED_FILE_CONTENTS);
updated.setFolder(original.getFolder());
nlapiSubmitFile(updated);

0
投票

在服务器端尝试使用 Netsuite 中的 SuiteScript 修改文件时,我遇到了类似的错误。我使用的是文档中解释的方式,他们说通过

file.copy()
conflictResolution: file.ConflictResolution.OVERWRITE
复制新文件。然而,这种方式对我来说不起作用,因为它既没有创建文件也没有覆盖它。最后,我使用以下表单来使其正常工作:

...            
let fileNew = file.create({
                name: 'same_name_of_the_original_file',
                fileType: file.Type.PLAINTEXT, // change it depending the file type you will create
                contents: credentials.body,
            });

fileNew.folder = folder_id;
let fileId = fileNew.save();
...

所以,关键是创建文件后更改文件夹并保存。之后,保存文件将覆盖原始文件。


0
投票

我们可以使用计划或映射减少脚本来完成此操作。首先加载文件。您可以将其设置为根据您喜欢的时间表运行。检索现有文件的数据。然后,您可以创建一个具有相同属性(数据字段除外)的新文件,您可以根据需要对其进行修改。最后,您可以删除旧文件来完成该过程。

以下是示例代码:

function onRequest(context)
{
    var oldfile=file.load({id:"12345});  //Replace with your file id
    var getData= oldfile.getcontents();
    var filename=oldfile.name;
    var filetype=oldfile.filType;
    file.delete({id:"12345"})//Replace with your file id.

    getdata+="this is changed data";

    var newdatafile=file.create({
    name:filename,
    fileType:filetype,
    contents:data
    });

newdatafile.folder="1111"   //Replace with your folder id
newdatafile.save();  //Save the new file
}
© www.soinside.com 2019 - 2024. All rights reserved.