2009-11-19 50 views
2

我有一个很大的产品列表,需要生成一个静态文件,并在我的网站上有该文件。目前,我生成列表,并将其上传到文件柜。我希望自动化这个过程。我想安排一个SuiteScript每天晚上运行并生成这个列表并更新文件柜中的文件。Netsuite Suitescript可以修改文件柜中的文件吗?

可以这样做吗?

谢谢

回答

3

您可以使用SuiteScript自动执行此过程。您将使用nlapiLoadFile和nlapiSubmitFile调用来完成它。如果您有大量的产品列表,您可能会遇到其他一些问题。您可能会受到治理限制,并需要开发此脚本,以便跟踪进度并适当重新安排自己的时间。 SuiteScript搜索将只返回前1000条记录。如果您的文件中包含超过1000个项目,则您可能需要在项目记录上使用一个标记来跟踪哪些项目保留用于导出。使用SuiteScript加载或创建文件时,文件大小目前有5MB限制。

+0

非常感谢。我准备好最后继续前进。我已经完成了一些API文档的阅读。我的产品列表大约500件,我只需要几列,所以我不认为我会受到任何治理/规模的限制。你有什么建议可以在哪里找到执行此操作的示例脚本/代码?在此先感谢您的帮助。 – Rob 2010-01-08 16:23:48

4

例SuiteScript创建一个文件:

var data = 'Your,CSV,File,Here'; 
var folderId = 519; // Your File Cabinet folder ID here 

// Create the file and add it to the folder 
var f = nlapiCreateFile('products.csv', 'CSV', data); 
f.setFolder(folderId); 
var id = nlapiSubmitFile(f); 

// If you want to attach the file to a record, you can do something like this: 
nlapiAttachRecord('file', id, 'customrecord_x', recordId); 
+0

谢谢文森特...我会检查你提出的新建议的stackexchange社区。 – Rob 2010-10-19 17:56:37

+0

看起来像netsuite堆栈交换从未发生过。 – drewish 2015-05-20 00:12:19

+0

正确,只需使用此网站和“netsuite”标记...链接已移除 – Vincent 2015-05-21 01:19:43

1

是的,你可以做到这一点使用计划脚本,并将其安排为你的愿望。 没有特殊的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 
} 
相关问题