レコードを表示または編集しているときに機能しますか?彼らはわずかに異なるスクリプトを持っています。レコードが表示されているときにボタンを動作させたいと思っていますが、ドキュメントを編集中であっても機能するように記述します。
Netsuiteは、2つのスクリプト、ユーザーイベントスクリプト、およびクライアントスクリプトが必要です。 @michoelが提案する方法は、あまりにもうまくいくかもしれません...私は個人的にテキストの前にスクリプトを挿入したことはありません。 おそらく今日はいつかそれを試してみます。
ここでは、使用できるユーザーイベントがあります(自分でテストしていないので、すべてのユーザーに展開する前にテストを実行する必要があります)。
function userEvent_beforeLoad(type, form, request)
{
/*
Add the specified client script to the document that is being shown
It looks it up by id, so you'll want to make sure the id is correct
*/
form.setScript("customscript_my_client_script");
*/
Add a button to the page which calls the openURL() method from a client script
*/
form.addButton("custpage_open_url", "Open URL", "openURL()");
}
これをUser EventスクリプトのSuitescriptファイルとして使用します。スクリプトページのロード前機能をuserEvent_beforeLoadに設定します。実行したいレコードに展開してください。
ここには、それと一緒に行くクライアントスクリプトがあります。
function openURL()
{
/*
nlapiGetFieldValue() gets the url client side in a changeable field, which nlapiLookupField (which looks it up server side) can't do
if your url is hidden/unchanging or you only care about view mode, you can just get rid of the below and use nlapiLookupField() instead
*/
var url = nlapiGetFieldValue('custbody_url');
/*
nlapiGetFieldValue() doesn't work in view mode (it returns null), so we need to use nlapiLookupField() instead
if you only care about edit mode, you don't need to use nlapiLookupField so you can ignore this
*/
if(url == null)
{
var myType = nlapiGetRecordType();
var myId = nlapiGetRecordId();
url = nlapiLookupField(myType, myId,'custbody_url');
}
//opening up the url
window.open(url);
}
クライアントスクリプトとして追加しますが、展開はしないでください(ユーザーイベントスクリプトによってフォームに追加されます)。このスクリプトのIDがのcustomscript_my_client_script(または、form.setScript()のユーザーイベントスクリプトで使用したスクリプトID)であることを確認してください。そうしないと、動作しません。
さらに、各レコードにはform.setScript()を使用して1つのスクリプトしか追加できないということです(ユーザーのイベントスクリプトとクライアントスクリプトのタイトルに、あなたはそれを展開しています。 form.setscriptの使用は、「フォームのカスタマイズ」メニューでスクリプト値を設定するのと同じです。
@ michoelの回答がうまくいくならば、ロジックをすべて私の視点から見ると、あなたのスイーツスクリプトを簡単に管理できるようにすることができます。
これは私のために空白のページを開きます。私が追加しようとするときに: 'var rec = nlapiLoadRecord( 'vendorbill'、nlapiGetRecordId()); var url = rec.getFieldValue( 'custbody_url'); ' このページを開こうとすると、何もせずにページにとどまります – bluejay92