Google电子表格:将日期添加到由inputBox设置的日期,填充范围

Posted

技术标签:

【中文标题】Google电子表格:将日期添加到由inputBox设置的日期,填充范围【英文标题】:Google spreadsheet: Add days to date set by inputBox, fill range 【发布时间】:2013-10-01 19:51:40 【问题描述】:

如何根据 inputBox 设置的 startDate 填充 Google 电子表格中的范围?基本上,(1)用户输入 startDate; (2) 脚本从 startDate 开始填充单元格 A1 到 A13,每行添加 7 天。

这是我尝试做的:

var startDate = Browser.inputBox('What is the start date?', Browser.Buttons.OK_CANCEL);
for (var k = 0; k < (13); k++) 
  sheet.getRange((k+1),1).setValue(startDate + k * 7);

不幸的是,我认为 setValue 将 startDate 视为字符串?因此,对于框中输入 15/10/2013 和格式化为 dd-mmm-yyyy 的单元格,这些单元格将填充 15-Oct-20130、15-Oct-20137、15-Oct-201314 等等.我希望是 2013 年 10 月 15 日、2013 年 10 月 22 日、2013 年 10 月 29 日等等。帮忙?

【问题讨论】:

【参考方案1】:

您可以利用 UIApp 的专用小部件来选择开始日期,并使用电子表格公式来创建日期序列(您知道电子表格中的 =date+7 会自动给出 7 天后的日期。

这是怎么回事:

function dateSequence() 
  var app = UiApp.createApplication().setTitle('Choose a start Date').setHeight('100').setWidth('200');
  var date = app.createDateBox().setName('date').setValue(new Date());
  var clickHandler = app.createServerHandler('setDate').addCallbackElement(date);
  app.add(date).add(app.createButton('submit', clickHandler));
  SpreadsheetApp.getActive().show(app)


function setDate(e)
  var app = UiApp.getActiveApplication().close();
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,1).setValue(e.parameter.date);
  for (var k = 1; k < 13; k++) 
    sheet.getRange((k+1),1).setFormula("= (A"+k+")+"+7);
  
  return app;

【讨论】:

谢谢!使用 setFormula() 是一个很好的提示。不过,我想要单元格中只有值的内容,所以我最终做的是(1)使用 setFormula() 用正确的日期填充单元格;然后 (2) 运行一个 getValues() 后跟一个 setValues() 用于相同的范围以用值替换公式。哦,我没有打扰 UiApp,只是使用了原来的 Browser.inputBox 。有点蛮力,但解决了。 如您所愿...如果其他人必须填写正确的日期格式,使用浏览器输入可能会很危险,但这取决于您...:-) 请考虑接受答案。

以上是关于Google电子表格:将日期添加到由inputBox设置的日期,填充范围的主要内容,如果未能解决你的问题,请参考以下文章

google docs电子表格导出:如何从时间、日期中删除撇号[关闭]

Google 表格脚本 - 根据单元格作为今天的日期发送电子邮件

使用 Apps 脚本在带有日期的 Google 电子表格中存档

Google电子表格循环依赖

Google 表格脚本:带有 HTML 表格的电子邮件,该表格只有一组

从外部数据库自动加载 Google 电子表格数据