Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google应用程序脚本:获取两个日期之间的日期数组_Google Apps Script - Fatal编程技术网

Google apps script Google应用程序脚本:获取两个日期之间的日期数组

Google apps script Google应用程序脚本:获取两个日期之间的日期数组,google-apps-script,Google Apps Script,我正在制作时间表电子表格。我想包括一个功能,允许用户通过输入开始日期和结束日期来输入休假期间,然后自动标记这两个日期之间的日期。我有以下内容,它根据相关的开始和结束日期输入值,但不输入两者之间的日期。有并没有办法建立一个日期数组,然后我可以循环 function updateLeave() { var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Front Page"); var startDate = ss.getR

我正在制作时间表电子表格。我想包括一个功能,允许用户通过输入开始日期和结束日期来输入休假期间,然后自动标记这两个日期之间的日期。我有以下内容,它根据相关的开始和结束日期输入值,但不输入两者之间的日期。有并没有办法建立一个日期数组,然后我可以循环

function updateLeave() {
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Front Page");
 var startDate = ss.getRange("C15").getValue();
 var endDate = ss.getRange("C16").getValue();
 var type = ss.getRange("C17").getValue(); 
 var creditTime = ss.getRange("C18").getValue();

 var allSheets = SpreadsheetApp.getActiveSpreadsheet();
 var sheets = allSheets.getSheets();
 sheets.forEach (function (sheet) {

 var columnB = sheet.getRange(2, 2, 70, 1); 
 var bValues = columnB.getValues(); 
 var today = startDate; 
 for (var i = 0; i < bValues.length; i++) { 
 var fDate = new Date(bValues[i][0]);
 if (fDate.getDate() == today.getDate() && 
    fDate.getMonth() == today.getMonth() && 
    fDate.getFullYear() == today.getFullYear()) { 
    sheet.getRange(i + 2, 10, 1, 1).setValue(type);
    sheet.getRange(i + 2, 9, 1, 1).setValue(creditTime);  
}
}
})

sheets.forEach (function (sheet) {

var columnB = sheet.getRange(2, 2, 70, 1); 
var bValues = columnB.getValues(); 
var today = endDate; 
for (var i = 0; i < bValues.length; i++) { 
var fDate = new Date(bValues[i][0]);
if (fDate.getDate() == today.getDate() && 
    fDate.getMonth() == today.getMonth() && 
    fDate.getFullYear() == today.getFullYear()) { 
    sheet.getRange(i + 2, 10, 1, 1).setValue(type);
    sheet.getRange(i + 2, 9, 1, 1).setValue(creditTime);  
}
}

})
}
函数updateLave(){
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“首页”);
var startDate=ss.getRange(“C15”).getValue();
var endDate=ss.getRange(“C16”).getValue();
var type=ss.getRange(“C17”).getValue();
var creditTime=ss.getRange(“C18”).getValue();
var allSheets=SpreadsheetApp.getActiveSpreadsheet();
var sheets=allSheets.getSheets();
sheets.forEach(功能(工作表){
var columnB=sheet.getRange(2,2,70,1);
var bValues=columnB.getValues();
var today=起始日期;
对于(var i=0;i
像这样的东西怎么样:

var DAY_MILLIS = 24 * 60 * 60 * 1000;

function main() {
  var a = new Date('2016/01/01');
  var b = new Date('2016/01/03');
  var dates = createDateSpan(a, b);
}

function createDateSpan(startDate, endDate) {
  if (startDate.getTime() > endDate.getTime()) {
    throw Error('Start is later than end');
  }

  var dates = [];

  var curDate = new Date(startDate.getTime());
  while (!dateCompare(curDate, endDate)) {
    dates.push(curDate);
    curDate = new Date(curDate.getTime() + DAY_MILLIS);
  }
  dates.push(endDate);
  return dates;
}

function dateCompare(a, b) {
  return a.getFullYear() === b.getFullYear() &&
    a.getMonth() === b.getMonth() &&
    a.getDate() === b.getDate();
}

main
函数显示了一个使用示例

类似的内容如何:

var DAY_MILLIS = 24 * 60 * 60 * 1000;

function main() {
  var a = new Date('2016/01/01');
  var b = new Date('2016/01/03');
  var dates = createDateSpan(a, b);
}

function createDateSpan(startDate, endDate) {
  if (startDate.getTime() > endDate.getTime()) {
    throw Error('Start is later than end');
  }

  var dates = [];

  var curDate = new Date(startDate.getTime());
  while (!dateCompare(curDate, endDate)) {
    dates.push(curDate);
    curDate = new Date(curDate.getTime() + DAY_MILLIS);
  }
  dates.push(endDate);
  return dates;
}

function dateCompare(a, b) {
  return a.getFullYear() === b.getFullYear() &&
    a.getMonth() === b.getMonth() &&
    a.getDate() === b.getDate();
}

main
函数显示了一个使用示例

Ok,太好了。这似乎是可行的,但我不知道如何在脚本中循环每个日期并将其输入到相关的单元格中。然后,您将如何处理日期列表?您希望将它们放在工作表上的什么位置?该项目是一个时间表。所以每个月都有自己的工作表。如果用户有一周的休息时间,需要输入该时间,那么他们当前要做的就是输入开始日期和结束日期,然后脚本会继续查找这些日期,并针对这些日期插入一条记录。我需要它做的是在开始日期和结束日期之间输入每个日期的记录。为什么
a.getDate()===b.getDate()
不足以进行比较。好的,太好了。这似乎是可行的,但我不知道如何在脚本中循环每个日期并将其输入到相关的单元格中。然后,您将如何处理日期列表?您希望将它们放在工作表上的什么位置?该项目是一个时间表。所以每个月都有自己的工作表。如果用户有一周的休息时间,需要输入该时间,那么他们当前要做的就是输入开始日期和结束日期,然后脚本会继续查找这些日期,并针对这些日期插入一条记录。我需要它做的是在开始日期和结束日期之间输入每个日期的记录。为什么
a.getDate()===b.getDate()
不足以进行比较。