apps-script:如何读回文本小部件的内容?

时间:2013-01-18 21:20:56

标签: google-apps-script

我确定这是一个非常愚蠢的问题,但我花了一个小时用谷歌搜索,没有运气。

我在各种小部件中存储电子表格数据(一些文本,一些日期)。在某些时候,点击处理程序必须从窗口小部件读回文本或日期,并将其写入另一个电子表格。目前,我已经在FlexTable(或FlexTable中的Label小部件)中获得了数据。我现在发现(我认为)没有办法回读这些数据。

我有什么想法来解决这个问题?我只需要一个小部件,它可以让我存储数据,显示它,然后再读回来。

感谢。

修改

我认为答案实际上没有让我更进一步。我感谢我可以读取一些小部件的价值,如果它们作为回调传递给处理程序。但是,这似乎仅限于使用setName方法的方法 - 这只是TextBoxListBox吗?如果是这样,那是没用的,因为TextBox是用户输入的。

那么,是否有一个小部件让(脚本,而不是用户)存储数据,然后再读回来?或者我只是很厚?

3 个答案:

答案 0 :(得分:1)

你没有很好的搜索,这里有很多例子......今天只发布了一个例子:Date AND Time picker Google App Script

documentation,查看页面的(近)端...

答案 1 :(得分:1)

如果您在其标签中设置文字,您实际上可以从Label小部件中读取文本...

// Get Label text and set it to another label
function doGet() {
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var label1 = app.createLabel('hello').setTag('hello').setId('label1');
  Logger.log(label1.getTag()); // works
  var label2 = app.createLabel('').setId('label2');
  var handler = app.createServerHandler('myFunction').addCallbackElement(panel);
  var btn = app.createButton('Get tag', handler);
  panel.add(label1).add(label2).add(btn);
  app.add(panel);
  return app;
}

function myFunction(e) {
  var app = UiApp.getActiveApplication();
  Logger.log(app.getElementById('label1').getTag()) // doesn't work
  var tag = e.parameter.label1_tag; // works
  Logger.log(tag); 
  app.getElementById('label2').setText(tag); // Sets label2 text as label1 tag
  return app;
}

您使用Label指定没有.setName(),但它看起来像是自动创建的。

在您的情况下,将文本存储在与标签重合的不可见文本框内是另一种选择。

答案 2 :(得分:0)

看看https://developers.google.com/apps-script/uiapp#ServerHandlers 窗口小部件的值将传递给e.parameter中的服务器处理程序。不要忘记给出小部件名称和ID。如果您想获取不是触发事件处理的窗口小部件的值,那么您需要使用窗口小部件标记值传递数据