この質問は、「 「連鎖」機能は GAS で使用できますか?」の拡張です。
私は似たようなことをする必要があります...前の質問に答えたコード例をコピー/貼り付けます:
var app = null;
function firstHandler(e) {
if( app == null )
app = UiApp.getActiveApplication();
//do your thing
//now, instead "return app;" you return the second handler
return secondHandler(e);
}
function secondHandler(e) {
if( app == null )
app = UiApp.getActiveApplication();
//do your job
return app;
}
ここで、firstHandler() はボタンのクリック ハンドラーです。この例と私がしなければならないことの違いは、私の場合、 secondHandler() がフォームから情報を取得する必要があるということです。具体的には、リスト ボックスから選択した値を取得する必要があります。
通常、secondHandler() でその情報を取得する方法は、リスト ボックスを含む親オブジェクトを関数に渡し、次のような行を作成することです。
var value = eventInfo.parameter.listBoxName;
ただし、リスト ボックスが含まれるグリッドを secondHandler() に渡すのに問題があります。これが私が試したことです:
var app = null;
function firstHandler(e) {
if( app == null )
app = UiApp.getActiveApplication();
//do your thing
//get the object now, pass it into the chained function
var myGrid = app.getElementById("gridId");
return secondHandler(myGrid);
}
function secondHandler(e) {
if( app == null )
app = UiApp.getActiveApplication();
var value = e.parameter.listBoxName.toString();
//do your job
return app;
}
しかし、これは機能していません。また、firstHandler() 内でグリッドを secondHandler() に渡す必要がないように、secondHandler() を完全に引数なしに変更しようとしました。
var app = null;
function firstHandler(e) {
if( app == null )
app = UiApp.getActiveApplication();
//do your thing
return secondHandler(e);
}
function secondHandler(e) {
if( app == null )
app = UiApp.getActiveApplication();
var value = app.getElementById('listBoxId').value;
//do your job
return app;
}
これも機能しません... "app.getElementById('listBoxId').value" は何も返さないようです。なぜそうしないのかわかりません:(
これを行う方法について何か考えはありますか?app.getElementById の回避策が期待どおりに動作しない理由を知っている人はいますか? すべての助けに感謝します!!!