将YouTube数据传输到Google工作表列

时间:2015-09-08 07:28:33

标签: google-app-engine google-apps-script google-apps youtube-data-api

我的目标是传入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调用中的多个存储值传递到特定范围的偏移单元格(在一列中)的主动或相关解决方案。

1 个答案:

答案 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列。