Google apps script 无法使用.getSelection.getActiveRangeList().getRanges()获取完整范围的数据
我已经反复讨论了好几个小时了,我要把头发拔出来 我有一个主电子表格,我从中提取数据,复制数据,然后粘贴到另一张表中。这是根据用户选择的行来完成的。选择单行可以按预期工作,多行(如果相邻)也可以工作。现在,我启动另一个if块,以说明使用此代码块选择的多个非相邻行:Google apps script 无法使用.getSelection.getActiveRangeList().getRanges()获取完整范围的数据,google-apps-script,Google Apps Script,我已经反复讨论了好几个小时了,我要把头发拔出来 我有一个主电子表格,我从中提取数据,复制数据,然后粘贴到另一张表中。这是根据用户选择的行来完成的。选择单行可以按预期工作,多行(如果相邻)也可以工作。现在,我启动另一个if块,以说明使用此代码块选择的多个非相邻行: var myRange = mySelection.getActiveRangeList().getRanges(); Browser.msgBox(myRange.length) for ( var i = 0
var myRange = mySelection.getActiveRangeList().getRanges();
Browser.msgBox(myRange.length)
for ( var i = 0; i < myRange.length; i++) {
var reserveData = myRange[i].getValues();
Browser.msgBox(reserveData[i]);
}
var myRange=mySelection.getActiveRangeList().getRanges();
Browser.msgBox(myRange.length)
对于(变量i=0;i
假设用户选择了4行进行复制。第一个MsgBox将显示长度为4。伟大的
但是,for循环中的MsgBox将仅显示第一次迭代的数据
循环的一部分。第二、第三和第四个MsgBox不包含任何数据 问题:
getValues()
返回一个2D数组。但是i
会更改每次迭代。i
中的更改与检索到的二维数组的索引无关。例如,在第二次迭代中,i
是1,但第二个范围(因此第二个reserveData
)可能不包含2行(第0行和第1行),因此reserveData[i]
将是未定义的
解决方案:
使用
它应该是Browser.msgBox(reserveData)代码>哦。我的。上帝所以它不是作为对象存储的getValues()
返回二维数组。但是i
会更改每次迭代。在第二次迭代中,i
是1,但第二个范围(因此第二个reserveData
)可能不包含2行(第0行和第1行)已获取。非常感谢。我会补充一个答案。考虑接受它。
Browser.msgBox(reserveData);//[i] removed