javascript - 有没有办法将脚本中的日期自动更新到最后一个月的第一天和最后一天?
问题描述
我试图找到一种方法让这两个日期在每个月初更改为前一个月的第一天和最后一天。
我在工作表中更新了所需的日期,但不能将这些单元格用作参考。
function export_gcal_to_gsheet(){
var mycal = "oli@waggerspack.com";
var cal = CalendarApp.getCalendarById(mycal);
var events = cal.getEvents(
new Date("1 September, 2018 00:00:00 GMT"), // this date
new Date("30 September, 2018 23:59:59 GMT"), // and this one
{search: 'Keba & Jenga'});
var sheet = SpreadsheetApp.getActiveSheet();
var header = [["Invoice"]]
var range = sheet.getRange(1,1,1,1);
range.setValues(header);
for (var i = 0; i < events.length; i++) {
var row = i + 12;
var myformula_placeholder = '';
var details = [[events[i].getDescription(), events[i].getStartTime()]];
var range = sheet.getRange(row, 1, 1, 2);
range.setValues(details);
var cell = sheet.getRange(row, 3);
cell.setFormula('=(HOUR(F' + row + ')+(MINUTE(F' + row + ')/60))-(HOUR(E' + row + ')+(MINUTE(E' + row + ')/60))');
cell.setNumberFormat('');
}
}
解决方案
如果你想使用你的服务器本地时间,你可以使用它:
var today=new Date();
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0);
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0);
endDate.setSeconds(-1);
document.write(startDate);
document.write('<br>');
document.write(endDate);
如果您更喜欢始终使用 GMT+0 时间,则必须使用以下代码:
var today=new Date();
today=new Date(today.valueOf() + today.getTimezoneOffset() * 60000);
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0);
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0);
endDate.setSeconds(-1);
console.log(today);
console.log(startDate);
console.log(endDate);
您的代码将是这样的(当地时间):
function export_gcal_to_gsheet(){
var mycal = "oli@waggerspack.com";
var cal = CalendarApp.getCalendarById(mycal);
var today=new Date();
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0);
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0);
endDate.setSeconds(-1);
var events = cal.getEvents(
startDate, // this date
endDate, // and this one
{search: 'Keba & Jenga'});
var sheet = SpreadsheetApp.getActiveSheet();
var header = [["Invoice"]]
var range = sheet.getRange(1,1,1,1);
range.setValues(header);
for (var i = 0; i < events.length; i++) {
var row = i + 12;
var myformula_placeholder = '';
var details = [[events[i].getDescription(), events[i].getStartTime()]];
var range = sheet.getRange(row, 1, 1, 2);
range.setValues(details);
var cell = sheet.getRange(row, 3);
cell.setFormula('=(HOUR(F' + row + ')+(MINUTE(F' + row + ')/60))-(HOUR(E' + row + ')+(MINUTE(E' + row + ')/60))');
cell.setNumberFormat('');
}
}
或者您的代码可能是这样的(对于 GMT+0 时间):
function export_gcal_to_gsheet(){
var mycal = "oli@waggerspack.com";
var cal = CalendarApp.getCalendarById(mycal);
var today=new Date();
today=new Date(today.valueOf() + today.getTimezoneOffset() * 60000);
var startDate=new Date(today.getFullYear(), today.getMonth()-1, 1, 0,0,0);
var endDate=new Date(today.getFullYear(), today.getMonth(), 1, 0,0,0);
endDate.setSeconds(-1);
var events = cal.getEvents(
startDate, // this date
endDate, // and this one
{search: 'Keba & Jenga'});
var sheet = SpreadsheetApp.getActiveSheet();
var header = [["Invoice"]]
var range = sheet.getRange(1,1,1,1);
range.setValues(header);
for (var i = 0; i < events.length; i++) {
var row = i + 12;
var myformula_placeholder = '';
var details = [[events[i].getDescription(), events[i].getStartTime()]];
var range = sheet.getRange(row, 1, 1, 2);
range.setValues(details);
var cell = sheet.getRange(row, 3);
cell.setFormula('=(HOUR(F' + row + ')+(MINUTE(F' + row + ')/60))-(HOUR(E' + row + ')+(MINUTE(E' + row + ')/60))');
cell.setNumberFormat('');
}
}
推荐阅读
- reactjs - 为 this.state 分配一个 id 以播放正确的动画?反应原生
- javascript - 从 ApiController 调用 .js 文件中的 JavaScript 函数
- nginx - 无法在一个 Virtualbox 来宾虚拟机上使用 kubernetes master 启动 nginx pod,而在另一台虚拟机上使用 kubernetes 节点
- c# - C# 仅提取最近的压缩文件
- spring-mvc - Spring Boot 发布请求模型验证
- google-cloud-functions - 对 Google 提交审核失败的操作
- java - JAVA - Class 类和 *.class 文件之间的区别?
- git - 重新定位现有的拉取请求以仅显示您的提交
- javascript - await with Promise.all is not in effect
- corda - 3 个参与者与 Corda 之间的交易