ウィジェットのサーバースクリプトについて

tec_yuki
Mega Guru

コミュニティの皆様

 

ウィジェットのサーバースクリプトがアプリケーションスコープにより、挙動が違うのですがなぜでしょうか?

tec_yuki_0-1707282082051.png

上記ソースのウィジェットを作成した際、

アプリケーションスコープGlobalで作成した場合は、何もエラーが出力されないのですが、

アプリケーションスコープHuman Resources Coreで作成した場合は下記のようなエラーが出力されます。

tec_yuki_1-1707282291505.png

原因わかりますでしょうか?

1 件の受理された解決策

Community Alums
適用対象外

@tec_yuki 様

 

Global アプリケーションと Scoped アプリケーションの挙動の違いについてはブラックボックス化されているので具体的な仕様は分かりかねるのですが、エラー自体は出力内容のとおり、Server 側のスクリプトの2行目に起因するものです。

 


 ウィジェットがページ上で初めてレンダリングを開始すると、まずサーバー スクリプトが実行され、3 つのグローバル オブジェクト (inputoptionsdata) にアクセスします。input 変数は、クライアント スクリプトから送信されたデータ オブジェクトであるため、この変数は初めての初期化時は定義されません。

(参考)https://docs.servicenow.com/ja-JP/bundle/vancouver-platform-user-interface/page/build/service-portal...

 

Server script の input オブジェクトにはクライアントスクリプトから送信されたデータが入るのですが、Widget のロード時にはまず Server script から実行されるため、その時点では input オブジェクトは未定義 (undefined) となっています。

Server script の2行目で inputオブジェクト (undefined) から trigger プロパティを参照しようとしたが、そのようなプロパティは存在しない、というのがエラーの指摘内容です。

 

該当箇所で input が undefined でないかをチェックする処理を追加すれば、エラーは回避できます。

 

(function() {
  if(input && input.trigger){
     gs.addErrorMessage(input.msg);
  }
})();

 

元の投稿で解決策を見る

2件の返信2

Community Alums
適用対象外

@tec_yuki 様

 

Global アプリケーションと Scoped アプリケーションの挙動の違いについてはブラックボックス化されているので具体的な仕様は分かりかねるのですが、エラー自体は出力内容のとおり、Server 側のスクリプトの2行目に起因するものです。

 


 ウィジェットがページ上で初めてレンダリングを開始すると、まずサーバー スクリプトが実行され、3 つのグローバル オブジェクト (inputoptionsdata) にアクセスします。input 変数は、クライアント スクリプトから送信されたデータ オブジェクトであるため、この変数は初めての初期化時は定義されません。

(参考)https://docs.servicenow.com/ja-JP/bundle/vancouver-platform-user-interface/page/build/service-portal...

 

Server script の input オブジェクトにはクライアントスクリプトから送信されたデータが入るのですが、Widget のロード時にはまず Server script から実行されるため、その時点では input オブジェクトは未定義 (undefined) となっています。

Server script の2行目で inputオブジェクト (undefined) から trigger プロパティを参照しようとしたが、そのようなプロパティは存在しない、というのがエラーの指摘内容です。

 

該当箇所で input が undefined でないかをチェックする処理を追加すれば、エラーは回避できます。

 

(function() {
  if(input && input.trigger){
     gs.addErrorMessage(input.msg);
  }
})();

 

@Community Alums 

詳しい解説ありがとうございます。

解決できました。