在 Netsuite 中,我想在按下事务记录上的标准按钮时运行套件脚本。商品履行中的“标记已发货”按钮示例。可以吗?
我尝试过客户端脚本,但它仅在您编辑记录时才有效。
我的结论是——不,这是不可能的。当然,除非有人创建了一些非常讨厌的东西,比如直接访问 DOM(我永远不会这样做)。
所以最合理的做法是:
结论基于2个前提:
我最近问了一个关于如何添加带有单击处理程序的按钮的问题在 NetSuite 中向页面添加按钮的一般步骤? 从答案中可以看出,唯一的[?]方法是在 serverWidget.button 实例上设置单击处理程序(通过
context.form.addButton()
方法的返回值访问),当您将其添加到部署在记录类型上的 UserEvent 脚本中时。
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define([], function() {
'use strict';
return {
beforeLoad: beforeLoad
};
function beforeLoad(context) {
var form = context.form;
form.clientScriptModulePath = '/SuiteScripts/foo.js';
form.addButton({
label: 'Foo',
id: 'custpage_foo',
functionName: 'fooClickHandler'
});
}
});
但是如果按钮已经存在,则 API 中无法为其设置处理程序。正如您所看到的,SuiteScript API 中没有像
Button.functionName
或 Button.modify()
这样的内容,即使您设法通过其 id 获取按钮,如 _back
:
文档没有提及任何适当的内容(https://system.netsuite.com/app/help/helpcenter.nl?fid=section_N2857647.html)。
所以答案是否定的,这是不可能的。