【发布时间】:2018-11-18 13:43:04
【问题描述】:
我正在尝试为工作场所的重复性任务设计一个小时间表。为了进行设置,我正在遍历我的数据以在第 2 列中找到“Quarterly”的值,在第 3 列中找到“Recurring”的值。
如果它确实找到了这些值,我将行数据推送到一个数组中。然后,我根据数组中名为 timesrecurring 的第 4 个值多次连接数组(为此,我使用了下面代码中未显示的不同函数)。
最后,我使用 .setvalues() 将数组复制到另一张纸上。代码如下:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Input Table");
var targetsheet = ss.getSheetByName("Summary Calendar");
var lastrow = sheet.getLastRow();
var datarange = sheet.getRange(8, 2, lastrow-1 , 10).getValues();
var x = [];
for(i=0; i<datarange.length; i++){
if (datarange[i][1] == "Recurring" && datarange[i][2] == "Quarterly" ){
x.push([datarange[i][0],datarange[i][1],datarange[i][2],datarange[i]
[3],datarange[i][4],datarange[i][7],datarange[i][8],datarange[i]
[9],datarange[i][5],datarange[i][6])
var timesrecurring = datarange[i][3]
var y = replicateArray(x,timesrecurring)
targetsheet.getRange(targetsheet.getLastRow()+1, 2,
y.length,y[0].length).setValues(y);
}
}
}
正如您在此处看到的,我正在寻找带有“Quarterly”和“Recurring”的行,并将相关行推送到数组中。然后我根据 timesrecurring 的值连接数组。
如果在我应用 for 循环的原始数据范围中只有一行带有“季度”和“重复”的行,则该脚本运行良好。但是,一旦我添加第二行,就会发生以下情况:
第一列 FTE 报告应该有 6 行,Ad-hoc 报告应该有 3 行。然而,该脚本首先从原始数据复制 FTE 报告 6 次,然后它需要 FTE 报告和 Ad-hoc 3 次(尽管它应该只是 3 倍)。似乎第二次将 FTE 报告行和 Ad-hoc 行存储在阵列中,而不仅仅是 Ad-hoc 行。
我已经尝试了一些方法来解决这个问题并在网上查看,但我找不到任何有效的方法。任何帮助,将不胜感激。
【问题讨论】:
标签: javascript google-apps-script google-sheets