gpt4 book ai didi

javascript - 向下填充多行范围(多列)-google-apps-script

转载 作者:行者123 更新时间:2023-11-29 19:56:04 26 4
gpt4 key购买 nike

我成功地用 A1 范围内的值填充了单个列 (A)...

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastRow = ss.getDataRange().getNumRows();
var rngVal = ss.getRange("A1").getValue()
ss.getRange("A2:A"+lastRow).setValue(rngVal)

然后我以为我在容易的街道上,我试图通过用范围 C1:H1 中找到的值填充多列范围来修改/应用它到更大的范围...

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastRow = ss.getDataRange().getNumRows();
var rngVal = ss.getRange("C1:H1").getValues()
ss.getRange("C2:H"+lastRow).setValues(rngVal)

显然,这不仅仅是在“值”一词的末尾加上一个“S”。

错误内容如下:

Incorrect range height, was 1 but should be 10

(仅供引用:var lastRow = 11)

顺便说一句,如果我使用 Value 而不是 Values,我不会收到任何错误,尽管我最终得到的单元格充满了仅在范围 C1 中找到的值。

所以我很接近....或远离。其中之一。

帮助???

最佳答案

错误消息非常明确...数组的大小必须符合 getValues 和 setValues 的范围。像这样试试:

function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastRow = ss.getLastRow()
var rngVal = ss.getRange("C1:H"+lastRow).getValues();// get an array of 10 "rows" and 6 "columns"
ss.getRange("C2:H"+(lastRow+1)).setValues(rngVal);//write back this array to a range that has the same size. (starting from Row2 it must ends on lastRow+1 to keep the same number of "rows"
}

此函数会将范围 C1:H lastRow 移动到 C2:H lastRow+1,不确定它是否非常有用,但这不是这里的重点;-)


编辑:抱歉,我没有完全理解您的要求...这是一个代码,可以在下面的所有行中从 C1:H1 复制数据

function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastRow = ss.getLastRow()
var rngVal = ss.getRange("C1:H1").getValues();// get an array of the first row
var rowData = rngVal[0]
var newData = []
for(n=1;n<lastRow;++n){newData.push(rowData)}
ss.getRange("C2:H"+lastRow).setValues(newData);//write back this array to a range that has the same size. (starting from Row2 it must ends on lastRow+1 to keep the same number of "rows"
}

EDIT2 以下您的评论:

一句话解释:

当使用 range.getValues() 时,我们得到一个二维数组,这意味着可以表示如下的数组数组:[[data1,data2,data3],[data4 ,data5,data6]] data1、2 & 3 是第一个数组(索引 0)的值,数据 4,5 & 6 是第二个数组(索引 1)的值。所以如果你想获取第一个数组中的值,你必须这样写:value = arrayName[0] 这将返回一个一维数组[data1,data2,data3 ],这就是我用来获取rowData的。

现在我们需要再次获取一个二维数组,以便能够将新数据写回电子表格中的某个范围。为此,我们创建了一个新数组(var newData=[]var newData = new Array() 的作用完全相同),并在 for 循环中添加了 rowData 数组到这个新数组...结果将是一个数组数组,这实际上是我们正在寻找的,我们可以在一个 setValues 语句中将其直接写入工作表。

关于javascript - 向下填充多行范围(多列)-google-apps-script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16071297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com