这是我第一次使用google sheet API,我正在尝试编写一个脚本,它接收一些数据并对其进行处理,这有效,然后我想将已处理的数据写入现有工作表中的列,这是我需要帮助的 .
有没有更好的方法将数组放在特定范围内?
错误消息说无法得到null的范围,这是我的代码到目前为止,不是块的一部分的行是问题:
function getList() {
var spreadsheetId = '1BjnZ-SPBVcCdITxcvEX1nCPecvGdYSKQ0m_GiaKduZQ';
var rangeName = 'Paste Here!I1:GZ6';
var pasteRange = 'The Goods!B3:B1000';
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
var width = values[0].length;
var teamNumbers = [];
if (!values) {
Logger.log('No data found.');
} else {
for(var col = 1; col < width; col+=2) {
for(var row = 0; row < values.length; row++) {
teamNumbers += values[row][col].toString();
teamNumbers += '\n'
}
}
SpreadsheetApp.getActiveSpreadsheet()getRange(pasteRange).setValues(teamNumbers) .
}
}
另外,第二个问题,如何为某个变量设置范围,如为了从参数中获取I1:GZ6?
非常感谢任何帮助,提前感谢!
2 回答
你得到错误的唯一原因
从
SpreadsheetApp.getActiveSpreadsheet()
行开始,如果您使用的是独立脚本而不是绑定脚本 . 独立脚本必须使用SpreadsheetApp.openById("some id")
才能访问电子表格 .有关差异的更多信息,请参阅Apps脚本文档
Standalone scripts
SpreadsheetApp#getActiveSpreadsheet
第一个问题
这个修改怎么样?
修改点:
teamNumbers
被声明为数组 . 但它被用作字符串 .为了使用Sheets API将值导入电子表格,必须将
teamNumbers
用作二维数组 .如果要在一个单元格中导入字符串值,
如果使用Sheets API,请使用
teamNumbers = [[value]]
.如果使用
SpreadsheetApp
的setValue(teamNumbers)
,请使用teamNumbers = value
.如果要使用
SpreadsheetApp.getActiveSpreadsheet().getRange(pasteRange).setValues(teamNumbers)
,则需要pasteRange
与teamNumbers
的行和列大小匹配 .如果要使用
var rangeName = 'Paste Here!I1:GZ6'
,可以使用Sheets API的Sheets.Spreadsheets.Values.update()
.在此修改中,使用了它 .
修改后的脚本:
注意:
参考:
第二个问题
如果要将gridrange转换为a1notation,可以在the document和this gist处看到示例 .
如果我误解你的问题,我很抱歉 .