Javascript 使用Google脚本从Google工作表中的单元格列表中获取数组

Javascript 使用Google脚本从Google工作表中的单元格列表中获取数组,javascript,arrays,google-apps-script,google-sheets,custom-function,Javascript,Arrays,Google Apps Script,Google Sheets,Custom Function,我如何在Google工作表的一组单元格中创建一个值数组 数组的行和列应与单元格相同,并且其值应与图纸在每个位置的值相同 另外,我希望能够将数组的范围作为参数传入,以便可以对不同的范围使用该函数 编辑2: 新的代码,几乎可以工作了,我只需要让它接收谷歌表单上用户输入的范围。这是我试图得到的工作,但一开始是努力工作,我不能通过选择的范围,并有细胞更新和功能运行 此外,我几乎每次都会遇到一个参考错误的问题,即使我试图在没有任何参数的情况下预设函数中的范围 function sortingtest(pW

我如何在Google工作表的一组单元格中创建一个值数组

数组的行和列应与单元格相同,并且其值应与图纸在每个位置的值相同

另外,我希望能够将数组的范围作为参数传入,以便可以对不同的范围使用该函数

编辑2: 新的代码,几乎可以工作了,我只需要让它接收谷歌表单上用户输入的范围。这是我试图得到的工作,但一开始是努力工作,我不能通过选择的范围,并有细胞更新和功能运行

此外,我几乎每次都会遇到一个参考错误的问题,即使我试图在没有任何参数的情况下预设函数中的范围

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;
}
功能分类测试(pWO、pInfo、pSearch){
var WO=SpreadsheetApp.getActiveSpreadsheet().getRange(pWO.getValues();
var Info=SpreadsheetApp.getActiveSpreadsheet().getRange(pInfo.getValues();
var Search=SpreadsheetApp.getActiveSpreadsheet().getRange(pSearch.getValues();
//[行][列]
var FinalArray1=[];
var FinalArray2=[];
var FinalArray3=[];
var LastArray=[];
var a=0;
var b=0;
var c=0;
var d=0;
对于(变量行=0;行
如果您从电子表格中调用您在评论中指出的函数(
=sortingtest(sheet1!A1:C12,sheet3!D1:E12,sheet2!F1:G4)
),则无需调用任何SpreadsheetApp函数即可获得数组:
pWO
pInfo
pSearch

引用Google自定义函数:

如果调用函数时引用一系列单元格作为参数
(like=DOUBLE(A1:B10))
,则该参数将是单元格值的二维数组。例如,在下面的屏幕截图中,
=DOUBLE(A1:B2)
中的参数被应用程序脚本解释为
DOUBLE([[1,3],[2,4]])


这就是我的整个函数在上面的样子,但我需要它,这样我就可以在我选择发送的范围内说,我需要这个函数来更新单元格,每当单元格范围内的内容发生变化时,你提到“发送(?)在一个范围内”和“来自谷歌表单的输入”。。。您是否从工作表中将其作为自定义函数调用?这是一条非常重要的信息,如果是这样的话,应该在问题中明确说明。函数调用是什么样子的?参数是以字符串形式传递的,还是您希望有类似于排序测试(A1:C12,D1:E12,F1:G4)?是的,我是从google sheets调用此函数的,很抱歉没有说清楚,我确实希望有类似的内容,但它也会包含单独的表,如:=排序测试(活页1!A1:C12,活页3!D1:E12,活页2!F1:G4)