0

Google アプリ スクリプトを使用するのはこれが初めてで、複数の機能からウィジェットにアクセスする方法について少し混乱しています。

基本的に、labelウィジェットを更新するボタンが欲しいです。したがって、ラベルにはデフォルトのテキストがありますが、「更新」ボタンが押されると、更新されて他のテキストが表示されます。

私が読んだところによると、イベント ハンドラーに渡すことができるのは、setNameメソッドを持つオブジェクトだけです。ウィジェットにはこれがないので、関数内のウィジェットの値を他のハンドラー関数からlabel更新するにはどうすればよいですか?doGet

これが私がやりたいことのアイデアです(しかし、仕事に取り掛かることはできません):

function doGet() {
  var app = UiApp.createApplication();

  // Create the label
  var myLabel = app.createLabel('this is my label')
  app.add(myLabel)

  // Create the update button
  var updateButton = app.createButton('Update Label');
  app.add(updateButton)

  // Assign the update button handler
  var updateButtonHandler = app.createServerHandler('updateValues');
  updateButton.addClickHandler(updateButtonHandler);

  return app;
}

function updateValues() {
  var app = UiApp.getActiveApplication();

  // Update the label
  app.myLabel.setLabel('This is my updated label')

  return app;
}

私は解決策を見つけようとして何時間もインターネットを探し回っていますが、それを理解できないようです. 助言がありますか?

4

1 に答える 1

1

オブジェクト名のプロパティからウィジェットの値を取得することについて言及しているのは、ウィジェットの値を取得することであり、設定することではありません。(この場合、大文字は「叫ぶ」ためではなく、単に注意を引くためのものです :-))

そして、ラベルの例は通常、値を読み取ることができないウィジェットの例です...

あなたが探しているのは、ウィジェットの値を設定する方法です:IDで要素を取得する必要があります:更新されたコードで以下の例を参照してください:

function doGet() {
  var app = UiApp.createApplication();
  // Create the label
  var myLabel = app.createLabel('this is my label').setId('label');
  app.add(myLabel)
  // Create the update button
  var updateButton = app.createButton('Update Label');
  app.add(updateButton)
  // Assign the update button handler
  var updateButtonHandler = app.createServerHandler('updateValues');
  updateButton.addClickHandler(updateButtonHandler);
  return app;
}

function updateValues() {
  var app = UiApp.getActiveApplication();
  // Update the label
  var label = app.getElementById('label').setText('This is my updated label');
  return app;
}
于 2013-10-07T20:54:31.963 に答える