电子邮件捕获插件 - Suitescript - 搜索文件夹返回空

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

我正在编写一个脚本来将附件保存到文件柜的特定文件夹中。 如果文件需要存放的文件夹不存在,则会创建该文件夹,效果很好。但是,如果该文件夹已经存在,我必须找到该文件夹 ID。 下面的脚本是我用来搜索文件夹的脚本。如果我在脚本调试器中运行代码,则会返回文件夹 ID。 但是当它从接收电子邮件的插件运行时,文件夹 ID 为空。

nlapiLogExecution('DEBUG', 'Folder: ' + folderName + ' ' + e.getCode());


var filterExpression = [ [ 'parent', 'anyOf', '20681' ],
             and',
                 [ 'name', 'is', folderName ] ];
// Define search columns
var columns = new Array();
columns.push(new nlobjSearchColumn( 'internalid' ));
var folderSearch = nlapiSearchRecord('folder', null, filterExpression, columns);
            
var folderId = folderSearch[0].getValue('internalid');
nlapiLogExecution('DEBUG', 'Folder: ' + folderId);

我认为这是运行插件的用户的权限问题。 我将插件的“执行角色”更改为我认为具有必要权限的角色,但文件夹 id 仍然为空。

netsuite suitescript1.0
1个回答
0
投票

听起来问题可能与从电子邮件捕获插件运行时脚本的权限或上下文有关。解决方法如下:

角色权限:确保分配给您的插件的角色具有必要的权限:

对文件柜和文件夹结构的完全访问。 查看或完全访问列表 > 文件夹。 执行搜索的搜索权限。 错误处理:将文件夹搜索逻辑包装在 try-catch 块中以捕获任何错误:

try {
        var folderSearch = nlapiSearchRecord('folder', null, [
            ['parent', 'anyOf', '20681'], 'AND', ['name', 'is', folderName]
        ], [new nlobjSearchColumn('internalid')]);
    
        var folderId = folderSearch && folderSearch.length > 0 ? folderSearch[0].getValue('internalid') : null;
        nlapiLogExecution('DEBUG', 'Folder ID', folderId || 'Not Found');
    } catch (e) {
        nlapiLogExecution('ERROR', 'Folder Search Error', e.message);
    }

检查执行上下文: 使用 nlapiGetContext().getRole() 记录脚本运行时的角色。这可能与调试器上下文不同,这可能是您的文件夹 ID 返回为空的原因。

在类似生产的环境中进行测试:在实际设置中测试插件以确定问题是否仍然存在也很重要。

这些步骤应该可以帮助您解决当您的脚本从电子邮件捕获插件运行时文件夹 ID 返回 null 的原因。如果您遇到持续存在的问题,请考虑向 Netsuite 开发服务 提供商寻求帮助,以确保一切配置正确。

© www.soinside.com 2019 - 2024. All rights reserved.