Google Apps脚本-从YouTube API传输数据

时间:2019-03-17 13:59:05

标签: javascript google-apps-script google-sheets google-api youtube-api

预先致歉-我是使用Google Apps脚本的完全入门。

我对如何将数据从YouTube API调用传输到Google表格存在疑问。我在下面设置了代码,该代码从频道ID中搜索视频并循环播放(以超出50个结果限制)。

我想将脚本中定义的四个变量拉回到Google表格中-发布于,标题,ID和URL,即有关频道中所有7,000多个视频的这四个元素的信息。所有这些信息似乎都可以使用Logger.log行成功记录。

我现在想将记录的信息转移到Google表格中。我尝试了不同的方法来完成此操作,但我仅成功地撤回了上一个视频的详细信息。

任何人都可以建议我在“ var ActiveSheet”行之后添加到最后一节的代码,以使此工作成功完成吗?

正如我所说的,如果这是一个愚蠢的问题,我们深表歉意。

function myFunction() {

var nextPageToken = '';

while (nextPageToken != null) {
  var sr = YouTube.Search.list("snippet", {
    channelId:'UC14UlmYlSNiQCBe9Eookf_A', 
    maxResults: 50,
    pageToken: nextPageToken
  });

    for (var j = 0; j < sr.items.length; j++) {
    var srItem = sr.items[j];
    var PublishedAt = srItem.snippet.publishedAt;
    var Title = srItem.snippet.title;
    var ID = srItem.id.videoId;
    var URL = srItem.snippet.thumbnails.high.url;
      Logger.log('[%s] Title: %s Id: %s Url: %s',
               srItem.snippet.publishedAt,
               srItem.snippet.title,
               srItem.id.videoId,
               srItem.snippet.thumbnails.high.url);
  }
  nextPageToken = sr.nextPageToken;
}

var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();

}

任何帮助将不胜感激。

谢谢

KC

1 个答案:

答案 0 :(得分:0)

您需要捕获每一行,然后保存到数组中。然后,您可以将行插入到工作表中。以下代码可以做到这一点。

function myFunction() {
  var nextPageToken = '';

  // to hold data rows
  var results = [];
  // add header row
  results.push(['Published At', 'Title', 'ID', 'URL']);

  while (nextPageToken != null) {
    var sr = YouTube.Search.list('snippet', {
      channelId: 'UC14UlmYlSNiQCBe9Eookf_A',
      maxResults: 50,
      pageToken: nextPageToken
    });

    for (var j = 0; j < sr.items.length; j++) {
      var srItem = sr.items[j];
      var PublishedAt = srItem.snippet.publishedAt;
      var Title = srItem.snippet.title;
      var ID = srItem.id.videoId;
      var URL = srItem.snippet.thumbnails.high.url;
      // add every row
      results.push([PublishedAt, Title, ID, URL]);
    }
    nextPageToken = sr.nextPageToken;
  }

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  // get range and set values
  // row to start, col to start, how many rows, how many cols
  sheet.getRange(1, 1, results.length, 4).setValues(results);
}