通过UI,我创建了几个附加到支持故障单记录的消息记录,其中两个记录具有文件附件。我已经能够检索票证,以及它在Suitescript中的相关消息 - 这些消息正确地报告了附件,因为' T' - 但我似乎无法访问附件本身。文档说明附件是一个名为' mediaitem'的子列表。 (或者' mediaitemlist',具体取决于您所查看的位置),但没有一个子列表API在这些名称上取得任何成功。
change
文档和其他在线信息非常稀少,因此非常感谢任何帮助。
答案 0 :(得分:5)
是的,确实文档很差。而mediaitem子列表并没有帮助我提供任何有意义的结果。
然而,还有另一种解决方案。
在消息记录类型的UI上创建已保存的搜索。
确保添加搜索列附件:内部ID(即 使用附件字段...)
一旦完成,请在suitecript中按
运行var res = nlapiSearchRecord('message', 'YOUR_UI_SEARCH_ID', ARRAY_OF_ADDITIONAL_FITLTERS);
res[i].getValue('internalid', 'attachments')
答案 1 :(得分:0)
您可以在 Suitescript 2.0 中执行此操作。首先搜索消息ID然后搜索与这些消息ID相关的附件。您可以即时创建搜索,因此无需保存搜索。
如果您希望根据您的方案保存治理点,则可以传递一组内部ID案例或消息。
注意:以下代码示例假定您已将搜索模块加载为SEARCHMODULE。
步骤1 - 这是如何从支持案例记录中获取带附件的消息ID(只需将类型更改为支持票证):
function getMessageIdsFromCase(supportCaseId){
var supportcaseSearchObj = SEARCHMODULE.create({
type: "supportcase", //Change if you need to
filters: [
["internalid","anyof",supportCaseId],
"AND",
["messages.hasattachment","is","T"]
],
columns: [
SEARCHMODULE.createColumn({
name: "internalid",
join: "messages"
})
]
});
var resultsSet = supportcaseSearchObj.run();
var results = resultsSet.getRange(0, 999);
var messages = [];
for (var i in results) {
var result = results[i];
var message = result.getValue(result.columns[0]);
messages.push(message);
}
return messages;
}
然后你只需要调用这个函数:
getMessageIdsFromCase(caseInternalId); //Returns an array of message ids
步骤2 - 然后使用带有此功能的消息内部ID搜索附件:
function getAttachmentIdsFromMessage(messageInternalId){
var messageSearchObj = SEARCHMODULE.create({
type: "message",
filters: [
["internalid","anyof",messageInternalId]
],
columns: [
SEARCHMODULE.createColumn({
name: "internalid",
join: "attachments"
})
]
});
var resultsSet = messageSearchObj.run();
var results = resultsSet.getRange(0, 999);
var attachments = [];
for (var i in results) {
var result = results[i];
var attachment = result.getValue(result.columns[0]);
attachments.push(attachment);
}
return attachments;
}
然后你只需要调用这个函数:
getAttachmentIdsFromMessage(messageInternalId); //Returns an array of attachment ids
答案 2 :(得分:-1)
更新:
提交案件后从NS听到。出现这种情况尚不支持:
Hi Shane,
我希望你今天做得很好。
经过检查,SuiteScript尚不支持访问附加到记录的文件的功能。您可以在SuiteAnswers ID 10511上查看SuiteScript记录浏览器,以获取SuiteScripts中所有可用记录的完整列表以及每个可访问的子列表。如果您还有其他问题,请与我们联系。
Caleb Francisco |客户支持 NetSuite:业务走向
将search.createColumn与连接一起使用是它的样子。我最终使用下面的快速代码来获取附加到$ transaction(returnauthorization)的任何$文件(html),这在我的情况下,应该是返回auth上的mediaitems,我无法通过ss2中的记录模块获取0.0
var getHtmlFilesOnReturnAuth = function (return_auth_id, file_type) {
var filters = [
search.createFilter({name: "internalid", operator: "is", values: [return_auth_id]}),
search.createFilter({name: "filetype", join: "file", operator: "is", values: [file_type]}),
];
var images = [];
search.create({
type: "returnauthorization",
filters: filters,
columns: [
search.createColumn({name: "internalid", summary: "group"}),
search.createColumn({name: "internalid", join: "file", summary: "group"}),
search.createColumn({name: "filetype", join: "file", summary: "group"}),
search.createColumn({name: "name", join: "file", summary: "group"}),
]
}).run().each(function (result) {
if (result) {
images.push({
id: result.getValue({name: "internalid", join: "file", summary: "group"}),
file_name: result.getValue({name: "name", join: "file", summary: "group"}),
file_type: result.getValue({name: "filetype", join: "file", summary: "group"}),
});
}
return true;
});
return images;
};
var images = getHtmlFilesOnReturnAuth("2134404", "HTMLDOC");