[英]Using Google Script to get an array from a list of cells in google sheet
如何创建Google表格中一组单元格中的值数组?
该数组应与单元格具有相同的行和列,并且其值应与工作表中每个位置的值相同。
另外,我希望能够将数组的范围作为参数传递,以便可以将函数用于不同的范围。
编辑2:新的代码,几乎可以正常工作,我只需要让它从Google表格本身的用户输入中接收范围即可。 这就是我要尝试的工作,但是起步很努力,我无法传递范围的选择,无法更新单元格并运行功能。
另外,即使我尝试在不带任何参数的情况下预置函数范围,我几乎每次都遇到参考错误的问题
function sortingtest(pWO, pInfo, pSearch) {
var WO = SpreadsheetApp.getActiveSpreadsheet().getRange(pWO).getValues();
var Info = SpreadsheetApp.getActiveSpreadsheet().getRange(pInfo).getValues();
var Search = SpreadsheetApp.getActiveSpreadsheet().getRange(pSearch).getValues();
//[row][column]
var FinalArray1 = [];
var FinalArray2 = [];
var FinalArray3 = [];
var LastArray = [];
var a = 0;
var b = 0;
var c = 0;
var d = 0;
for (var row = 0; row < WO.length; row ++) {
var counter = row - 1;
while (WO[row] == "") {
WO[row] = WO[counter];
counter--;
}
}
for (var col = 0; col < Info[0].length; col++) {
for (var row = 0; row < Info.length; row++) {
if (Info[row][col] == Search[col]) {
if (col == 0) {
FinalArray1[a] = WO[row];
a++;
}
else if (col == 1) {
FinalArray2[b] = WO[row];
b++;
}
else if (col == 2) {
FinalArray3[c] = WO[row];
c++;
}
}
}
}
for (var i = 0; i < FinalArray1.length; i++) {
for (var j = 0; j < FinalArray2.length; j++) {
for (var k = 0; k < FinalArray3.length; k++) {
if (FinalArray3[k] == FinalArray2[j] && FinalArray2[j] == FinalArray1[i]) {
LastArray[d] = FinalArray1[i];
d++;
}
}
}
}
return LastArray;
}
如果您按注释中的指示在电子表格中调用函数( =sortingtest(sheet1!A1:C12,sheet3!D1:E12,sheet2!F1:G4)
),则无需调用任何SpreadsheetApp获取数组的函数: pWO
, pInfo
和pSearch
将已经是二维数组。
引用Google自定义函数文章 :
如果您以对单元格范围的引用作为参数来调用函数
(like =DOUBLE(A1:B10))
,则参数将是单元格值的二维数组。 例如,在下面的屏幕快照中,Apps Script将=DOUBLE(A1:B2)
中的参数解释为double([[1,3],[2,4]])
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.