0

質問1)ボタンがクリックされたとき、このようなものを使用することは可能ですか(以下のコードを参照)?

function Submit(e) {
  var app = UiApp.getActiveApplication();
  var checked = app.getElementById("checkbox").getValue();
}

質問2)ラベルをクリックすると、このようなものを使用できますか(以下のコードを参照)?

function LabelClick(e) {
  var LabelText = e.parameter.getText();
}

申し訳ありませんが、これはおそらくばかげていますが、これのまともな例を見つけることができず、Googleのドキュメントからこれを解決できないようで、私もgooglescriptに慣れています。あなたが答えを持っているならば、私はそれを本当に感謝します。

4

2 に答える 2

2

あなたはそれほど遠くありません...しかしそれを機能させるのに十分な距離ではありません...

Ui要素の値は、ハンドラーに追加されるいわゆるcallbackelementでハンドラー関数に送信されます。このcallbackelementは、ボタン、ラベル、またはより簡単に言えば、他のすべてのウィジェットを含む親ウィジェットにすることができます。これらの「要素」はハンドラー関数の「e」にあり、名前で識別されます。
別の方向、つまり、別の関数からUi要素を変更する必要がある場合は、この要素をID(getElementbyId())で取得し、UI定義関数で行うのと同じ方法で値を割り当てることができます。

別の投稿からサンプルコードをコピーして貼り付けて、私が言ったことを説明しe.parameter.chkmodeます。チェックボックスの値を保持するが表示され、逆のプロセスを示すラベルを追加します(ボタンがクリックされるとテキストが変更されます) 。

私が十分に明確であることを願って、

var sh = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
//
function move() {
   var app = UiApp.createApplication().setTitle("move test")
       .setHeight(100).setWidth(400).setStyleAttribute("background-color","beige");
   var panel = app.createVerticalPanel();
   var next = app.createButton('next').setWidth('180');
   var chkmode = app.createCheckBox("moving mode (checked = up/dwn, unchecked=L/R)").setValue(false).setName('chkmode');
   var label = app.createLabel("test Label with text that will be modified on click").setId('label');
   panel.add(next).add(chkmode).add(label);
   var handler = app.createServerHandler('click').addCallbackElement(panel);
   next.addClickHandler(handler);
   app.add(panel);
   ss.show(app);
 }
//
function click(e) {
  var app = UiApp.getActiveApplication();
  var activeline = sh.getActiveRange().getRow();// get the row number of the selected cell/range
  var activecol = sh.getActiveRange().getColumn();// get the row number of the selected cell/range
  var label = app.getElementById('label');
  label.setText('You have clicked the button');
  var chkmode=e.parameter.chkmode;
  if(chkmode=="true"){
    activeline++
    }else{
      activecol++}
  var sel=sh.getRange(activeline,activecol);
  sh.setActiveSelection(sel);// make the next row active
  return app;
 }
于 2012-07-11T20:32:50.253 に答える
0

UIとイベントのチュートリアルについては、次のことをお勧めします。

https://developers.google.com/apps-script/uiapp

于 2012-07-12T08:13:08.820 に答える