Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 Sheets-将单个日期变量扩展到脚本中的日期范围_Google Apps Script_Google Sheets_Google Sheets Formula_Gs Vlookup - Fatal编程技术网

Google apps script Google Sheets-将单个日期变量扩展到脚本中的日期范围

Google apps script Google Sheets-将单个日期变量扩展到脚本中的日期范围,google-apps-script,google-sheets,google-sheets-formula,gs-vlookup,Google Apps Script,Google Sheets,Google Sheets Formula,Gs Vlookup,一直在开发一个工作表,最初是一个vlookup和match函数,但在用户Iamblichus的帮助下,它成长为一个脚本。该脚本从Sheet1上的表中提取数据,并将其匹配并填充到Sheet2上的日历中。我试图稍微调整脚本,以扩展它从Sheet1中提取的数据。目前,它能够识别Sheet1(b列)中的单个日期,但我希望能够将该单个日期变量更改为日期范围,以便Sheet1 c列(长度)中的值填充在Sheet2日历上的日期范围内 以下是脚本当前的外观: function onEdit() { var

一直在开发一个工作表,最初是一个vlookup和match函数,但在用户Iamblichus的帮助下,它成长为一个脚本。该脚本从Sheet1上的表中提取数据,并将其匹配并填充到Sheet2上的日历中。我试图稍微调整脚本,以扩展它从Sheet1中提取的数据。目前,它能够识别Sheet1(b列)中的单个日期,但我希望能够将该单个日期变量更改为日期范围,以便Sheet1 c列(长度)中的值填充在Sheet2日历上的日期范围内

以下是脚本当前的外观:

function onEdit() {
  var ss = SpreadsheetApp.getActive();
  var sheet1 = ss.getSheetByName('Sheet1');
  var sheet2 = ss.getSheetByName('Sheet2');
  var firstRow = 2;
  var numRows = sheet1.getLastRow() - 1;
  var firstCol = 1;
  var numCols = sheet1.getLastColumn();
  var inputData = sheet1.getRange(firstRow, firstCol, numRows, numCols).getValues();
  var numBrands = sheet2.getLastRow();
  var outputRange = sheet2.getDataRange();
  var outputData = outputRange.getValues();
  for(var i = 0; i < numRows; i++) {
    for(var j = 1; j < outputData.length; j++) {
      for(var k = 1; k < outputData[0].length; k++) {
        var inputBrand = inputData[i][0];
        var outputBrand = outputData[j][0];
        var inputDate = inputData[i][1];
        var outputDate = outputData[0][k];
        if(inputBrand == outputBrand && inputDate.toString() == outputDate.toString()) {
          var inputLength = inputData[i][2];
          sheet2.getRange(j+1, k+1, 1, 1).setValue(inputLength);
        }      
      }  
    }
  }
}
函数onEdit(){
var ss=SpreadsheetApp.getActive();
var sheet1=ss.getSheetByName('sheet1');
var sheet2=ss.getSheetByName('sheet2');
var firstRow=2;
var numRows=sheet1.getLastRow()-1;
var-firstCol=1;
var numCols=sheet1.getLastColumn();
var inputData=sheet1.getRange(第一行、第一列、numRows、numCols).getValues();
var numBrands=sheet2.getLastRow();
var outputRange=sheet2.getDataRange();
var outputData=outputRange.getValues();
对于(变量i=0;i
这里有一个链接,指向我的示例单一日期表,其中脚本按预期工作:

下面是我想在Sheet1中实现的日期范围示例,脚本不起作用:


我想扩展脚本,以便能够识别设置在“开始日期”和“结束日期”之间的日期范围。然后从Sheet1中的“长度”列中提取值,并在Sheet2的日期范围内填充“长度”列值。

当我看到您的共享电子表格时,我在“Sheet1”中找到了“品牌”、“结束日期”、“长度”三列。关于
为开始日期添加一个新列
,如何反映到您的共享电子表格中?这样,它将帮助用户思考解决方案。顺便说一下,在脚本中,似乎使用了OnEdit事件触发器。但未使用事件对象。那么,我可以问一下在你的实际情况下运行脚本的方法吗?我甚至无法帮助你,因为这个问题还不够清楚。@Tanaike谢谢你的建议。我添加了另一个包含“开始日期”列的工作表。一开始我避免使用它,因为它会阻止脚本工作。至于onEdit函数,我添加它只是为了在检测到编辑时运行。“我也做得不对吗?”尤里为不清楚道歉。我试图澄清这个问题,使它更有意义。基本上,我想扩展脚本,以便能够读取Sheet1中的“日期范围”和“长度”列,并在Sheet2中的该日期范围内填充“长度”列值。感谢您的回复。不幸的是,我无法理解“Sheet2”。“Sheet2”中“B2:BB23”的日期是什么?你能提供你期望的结果吗?此外,我无法理解“Sheet2”中“B”列的值。此列没有标题。但价值是存在的。你能解释一下你的目标吗?顺便说一下,如果希望通过OnEdit事件触发器运行脚本,我认为需要为运行脚本准备条件。因为即使编辑一个单元格,也会运行
onEdit()
。这个怎么样?