在多个行中填充一个范围(多个列)- google-apps-script
Fill a range (multiple columns) down multiple rows - google-apps-script
我已经成功地用范围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)
显然,这不仅仅是在"Value"后面加上一个"S"那么简单。
错误如下:
不正确的距离高度,为1,但应该是10
(仅供参考:var lastRow = 11)
Btw,如果我使用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最后一行移动到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"
}
一个字的解释:
当使用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
语句中将其直接写入到表中。
好了,这样就行了…
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var lastRow = ss.getLastRow()
var rngVal = ss.getRange("C1:H1").getValues()
for (var x=1; x<=lastRow; x++) {
ss.getRange("C"+x+":H"+x).setValues(rngVal);
- Google Apps Script中的标准Javascript
- Google Apps 脚本为 getLastRow 抛出电子邮件失败通知,我做错了什么
- Google Apps 脚本在单元格中返回行值
- 在Google Apps上从JavaScript迁移到Python
- 在 Google Apps 脚本中,无法以编程方式创建触发器以从 onEdit 触发器发送电子邮件
- Google Apps 脚本中的格式化日期
- Google Apps 脚本:尝试根据单元格的背景颜色发送电子邮件
- Google Apps 脚本,用于根据一个单元格的值对另一个单元格进行条件颜色格式设置
- 如何转换SalesForce Api提供的UTC日期格式,并使用Google Apps脚本将其转换为本地日期和时间格式
- Google UiApp中的Google Apps脚本验证问题
- 添加“;密码”;键入Google Apps Script inputBox
- 找不到Google Apps脚本库嵌套函数
- Google 电子表格:如何使用 Google Apps 脚本命名范围
- 函数范围规则(Google Apps 脚本项目)
- Google Apps 脚本在保护多个范围时运行时间非常慢
- 在Google Apps Script中返回“范围”而不是实际字符串
- 在多个行中填充一个范围(多个列)- google-apps-script
- 应用If/Then在一个范围(google-apps-script)
- Google Apps脚本:使用电子表格范围作为参数从菜单调用函数
- 在Google Apps Script Web App中使用Google可视化API显示GSheet范围时出错