我的目标是传入YouTube频道的ID并在给定的时间窗口内调用该频道的视频观看指标,将该数据存储在一个数组中,然后将每个视频观看指标传递到一个array.length的列以降序排列。
//...key variables
var channelId = sheet.getActiveCell().getValue();
var offsetCell = sheet.getActiveCell().offset(0,2);
//further down the script...
for(i=0; i < dataResponse.items.length; i++) {
var data = [];
var vidDataLen = dataResponse.items.length;
var offsetRange = sheet.getRange(offsetCell, vidDataLen, 0)
data.push(dataResponse.items[i].statistics.viewCount);
//sheet.appendRow(data)
offsetCell.setValue([data])
}
正如您所说,我最初使用了appendRow,但我并不希望将数据附加到覆盖行,我希望数据传入offsetCell的列和行,然后下降到后续的单元格中。
我的努力
var offsetRange = sheet.getRange(offsetCell, vidDataLen, 0)
试图根据数据数组中的项目数创建一个活动范围,因为每个通道的项目都会有所不同。
但是,这不起作用,因为getRange不接受对象作为参数。
我是否可以使用google-script函数将数组数据传递到偏移单元格和同一列中的连续单元格?
注意:运行此脚本并注释掉offsetRange变量会导致成功调用YouTube api,但是,只有一个值来自&#39;数据&#39;数组传递给offsetCell
注意2:我已经为Google脚本问题和相关主题搜索了StackOverflow,但是我没有看到将API调用中的多个存储值传递到特定范围的偏移单元格(在一列中)的主动或相关解决方案。
答案 0 :(得分:0)
对此的解决方案相对简单
我删除了数据数组并使用了语句sheet.insertRows(offsetCell.getRow()+1,vidDataLen);
在我想要传递数据的列中创建单元格范围,以便不会覆盖现有数据
var vidDataLen = dataResponse.items.length;
sheet.insertRows(offsetCell.getRow()+1,vidDataLen);
for(i=0; i < dataResponse.items.length; i++) {
offsetCell.setValue(dataResponse.items[i].statistics.viewCount);
offsetCell = offsetCell.offset(1, 0);
}
我没有将数据直接传递给循环数组,而是将每个值直接传递给setValue()方法的参数,然后分配offsetCell以将offsetCell的每个新迭代偏移1行和0列。