Google apps script 如何在GoogleSheetsAPI中写入工作表的特定范围
这是我第一次使用GoogleSheetsAPI,我正在尝试编写一个脚本,接收一些数据并对其进行处理,这是可行的,然后我想将处理后的数据写入一个已经存在的工作表中的列,这正是我需要帮助的地方 是否有更好的方法将数组置于特定范围内 错误消息说无法获取null的范围,这是我目前为止的代码,不属于块的行是问题所在:Google apps script 如何在GoogleSheetsAPI中写入工作表的特定范围,google-apps-script,google-sheets-api,Google Apps Script,Google Sheets Api,这是我第一次使用GoogleSheetsAPI,我正在尝试编写一个脚本,接收一些数据并对其进行处理,这是可行的,然后我想将处理后的数据写入一个已经存在的工作表中的列,这正是我需要帮助的地方 是否有更好的方法将数组置于特定范围内 错误消息说无法获取null的范围,这是我目前为止的代码,不属于块的行是问题所在: function getList() { var spreadsheetId = '1BjnZ-SPBVcCdITxcvEX1nCPecvGdYSKQ0m_GiaKduZQ';
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);
}
}
函数getList(){
var电子表格ID='1BjnZ-SPBVCCDITXVEX1NCPECVGDYSKQ0M_GiaKduZQ';
var rangeName='粘贴在这里!I1:GZ6';
var PasterRange='货物!B3:B1000';
var values=Sheets.Spreadsheets.values.get(spreadsheetId,rangeName).values;
变量宽度=值[0]。长度;
var teamNumbers=[];
如果(!值){
Logger.log('未找到数据');
}否则{
对于(变量列=1;列<宽度;列+=2){
对于(变量行=0;行
还有,第二个问题,如何将某个对象的范围设置为变量,以便从参数中获取I1:GZ6
非常感谢您的帮助,提前谢谢 关于你的第一个问题
这次修改怎么样
修改点:
被声明为数组。但它被用作字符串。teamNumbers
- 为了使用Sheets API将值导入电子表格,
必须用作二维数组TeamNumber
- 如果要在一个单元格中导入字符串值,
- 如果使用工作表API,请使用
teamNumbers=[[value]]
- 如果使用
的SpreadsheetApp
,请使用setValue(teamNumbers)
teamNumbers=value
- 如果使用工作表API,请使用
- 为了使用Sheets API将值导入电子表格,
- 如果要使用
,SpreadsheetApp.getActiveSpreadsheet().getRange(PasterRange).setValues(teamNumbers)
需要与PasterRange
的行和列的大小相匹配teamNumbers
- 如果要使用
,您可以使用Sheets API的var rangeName=”请粘贴在此处!I1:GZ6'
Sheets.Spreadsheets.Values.update()。
- 在本次修改中,使用了这一点
函数getList(){
var电子表格ID='1BjnZ-SPBVCCDITXVEX1NCPECVGDYSKQ0M_GiaKduZQ';
var rangeName='粘贴在这里!I1:GZ6';
var PasterRange='货物!B3:B1000';
var values=Sheets.Spreadsheets.values.get(spreadsheetId,rangeName).values;
变量宽度=值[0]。长度;
var teamNumbers=[];
如果(!值){
Logger.log('未找到数据');
}否则{
对于(变量列=1;列<宽度;列+=2){
对于(变量行=0;行
注:
- 如果出现与API相关的错误,请再次确认是否在高级Google服务和API控制台启用了Sheets API
如果我误解了你的问题,我很抱歉。你会出错的唯一原因 无法调用
null的getRange
方法
如果您使用的是独立脚本而不是绑定脚本,则从第SpreadsheetApp.getActiveSpreadsheet()
行开始。独立脚本必须使用SpreadsheetApp.openById(“某些id”)
才能访问电子表格
有关差异的更多信息,请参阅应用程序脚本文档
将脚本的语言也添加为标记谢谢!对于第二个问题,我的意思是如何将变量传递到范围中,例如A1:I5'表!A1:I5'@NightOwl4321使用不同的getRange
签名:如果变量theRangeStringVariable
中已经有A1符号字符串,则调用getRange(theRangeStringVariable)
将起作用。
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.push([values[row][col].toString()]); // Modified
}
}
var spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId(); // Modified
Sheets.Spreadsheets.Values.update({values: teamNumbers}, spreadsheetId, pasteRange, {valueInputOption: "RAW"}); // Modified
}
}