0

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

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

任何想法我打算如何处理这个?我只需要一个小部件,它可以让我存储数据、显示它,然后再读回它。

谢谢。

编辑

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

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

4

3 回答 3

1

你搜索得不是很好,这里有很多例子......今天只发布了一个:日期和时间选择器谷歌应用脚​​本

文档,请查看页面的(近)结尾...

于 2013-01-18T21:59:08.623 回答
1

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

// 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;
}

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

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

于 2013-01-19T21:33:37.630 回答
0

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

于 2013-01-18T22:12:38.733 回答