Доступ к виджетам в вертикальной панели в скриптах Google Apps? - PullRequest
0 голосов
/ 22 сентября 2011

Есть ли способ доступа к виджетам на панели в GAS?

Что-то вроде:

function clickHandler_(e) {
  var app = UiApp.getActiveApplication();
  var panel = app.getElementById(e.parameter.whatever); // short-cutting here
  for (var i=0; i<panel.widgets.length; i++) {
    var widget = panel.widgets[i];
    // do something with them
  }
  return app;
}

1 Ответ

0 голосов
/ 30 ноября 2011

Нет ничего простого. Вы должны дать всем виджетам идентификатор при добавлении и сохранить их где-нибудь, чтобы вы могли получить их позже. Например, в качестве тега на панели:

function doGet(e) {
  var app = UiApp.createApplication();
  ...
  var panel = app.createXYZPanel().setId('mypanel');
  var IDs = ''; //list of child widgets on this panel
  panel.add(widget.setId('id1'));
  IDs += ',id1';
  panel.add(widget2.setId('id2'));
  IDs += ',id2';
  //and so on...
  panel.setTag(IDs); //save the IDs list as a tag on the panel
  ...
  return app;
}

//...later on a handler
function handler(e) {
  var app = UiApp.getActiveApplication();
  //the panel or a parent must be added as callback of the handler
  var IDs = e.parameter.mypanel_tag.split(',');
  for( var i = 1; i < IDs.length; ++i ) { //skipping the 1st empty element
    var widget = app.getElementById(IDs[i]);
    //do something
  }
  return app;
}

Кстати, вы, наверное, это знаете, но в вашем коде была ошибка: Это не UiApp.getElementById, а app.getElementById.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...