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