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 电子表格中存档