Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script ReferenceError:未定义YouTube/在电子表格中插入YouTube注释_Google Apps Script_Google Sheets_Youtube Data Api - Fatal编程技术网

Google apps script ReferenceError:未定义YouTube/在电子表格中插入YouTube注释

Google apps script ReferenceError:未定义YouTube/在电子表格中插入YouTube注释,google-apps-script,google-sheets,youtube-data-api,Google Apps Script,Google Sheets,Youtube Data Api,我正在尝试将YouTube评论插入电子表格 我想获得评论的YouTube视频是由我创建的,在同一个谷歌账户上。 YouTube数据API v3已启用。运行该函数时,出现错误: 引用错误:未定义YouTube(第9行,文件“code”) 但对我来说似乎很好。我不知道9号线出了什么问题 以下是完整的代码: function getComments() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var video_list = ['YouTu

我正在尝试将YouTube评论插入电子表格

我想获得评论的YouTube视频是由我创建的,在同一个谷歌账户上。 YouTube数据API v3已启用。运行该函数时,出现错误:

引用错误:未定义YouTube(第9行,文件“code”)

但对我来说似乎很好。我不知道9号线出了什么问题

以下是完整的代码:

function getComments() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var video_list = ['YouTube_ID'];
var PageToken = '';

for (var i = 0; i < video_list.length; i++) {
  var video_id  = video_list[i];
  var video = YouTube.Videos.list('id, snippet, statistics', {id: video_id,});
  
  if (i == 0) {
    var sh = ss.getActiveSheet();
  } else {
    var sh = ss.insertSheet();
  }
  sh.setName(video.items[0].snippet.title);
  
  var row = 2;
  var col = 1;
  sh.getRange(1, 1).setValue("name");
  sh.getRange(1, 2).setValue("date");
  sh.getRange(1, 3).setValue("comment");

      
  while (true) {
    var comment_list = YouTube.CommentThreads.list('id, replies, snippet', {
      videoId: video_id,
      pageToken: PageToken,
      maxResults: 500,
    });
  
    for (var j = 0; j < comment_list.items.length; j++) {
      sh.getRange(row, col).setValue(comment_list.items[j].snippet.topLevelComment.snippet.authorDisplayName);
      sh.getRange(row, col + 1).setValue(comment_list.items[j].snippet.topLevelComment.snippet.publishedAt);
      sh.getRange(row, col + 2).setValue(comment_list.items[j].snippet.topLevelComment.snippet.textDisplay);
      row += 1;
      if (typeof comment_list.items[j].replies !== "undefined") {
         for (var k = 0; k < comment_list.items[j].replies.comments.length; k++) {
           sh.getRange(row, col).setValue(comment_list.items[j].replies.comments[k].snippet.authorDisplayName);
           sh.getRange(row, col + 1).setValue(comment_list.items[j].replies.comments[k].snippet.publishedAt);
           sh.getRange(row, col + 2).setValue(comment_list.items[j].replies.comments[k].snippet.textDisplay);
           row += 1;
         }
       }
    }
    PageToken = comment_list.nextPageToken
    if (typeof PageToken == "undefined") {
      break
    }
  }
}
函数getComments(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var video_list=['YouTube_ID'];
var PageToken='';
对于(变量i=0;i
}

错误消息如下所示:

修改点:

  • 从您的脚本和错误消息中,我认为您的
    YouTube错误消息未定义的原因是由于在高级谷歌服务中禁用了YouTube数据API v3。关于这一点,您能否确认YouTube Data API v3是否已在Advanced Google services上再次启用?如果尚未启用,请启用它并再次测试脚本

  • 当我看到你的脚本时,我认为脚本的处理成本会很高。因为循环中使用了
    setValue
    。为了降低脚本的处理成本,我建议使用以下流程

  • 检索所有值并将其放入数组
  • 将数组放入电子表格
  • “视频:列表”方法的
    maxResults
    似乎是50

当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
函数getComments(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var video_list=['YouTube_ID'];
var PageToken='';
var值=[];//已添加
对于(变量i=0;i
注:
  • 在此脚本中,如果存在相同的图纸名称,则会发生错误。所以请小心这个
参考资料:
    • 我认为这些链接可能有用
修改点:

  • 从您的脚本和错误消息中,我认为您的
    YouTube错误消息未定义的原因是由于在高级谷歌服务中禁用了YouTube数据API v3。关于这一点,您能否确认YouTube Data API v3是否已在Advanced Google services上再次启用?如果尚未启用,请启用它并再次测试脚本

  • 当我看到你的脚本时,我认为脚本的处理成本会很高。因为循环中使用了
    setValue
    。为了降低脚本的处理成本,我建议使用以下流程

  • 检索所有值并将其放入数组
  • 将数组放入电子表格
  • “视频:列表”方法的
    maxResults
    似乎是50

当上述各点反映到脚本中时
function getComments() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var video_list = ['YouTube_ID'];
  var PageToken = '';
  var values = []; // Added
  for (var i = 0; i < video_list.length; i++) {
    var video_id  = video_list[i];
    var video = YouTube.Videos.list('id, snippet, statistics', {id: video_id});
    if (i == 0) {
      var sh = ss.getActiveSheet();
    } else {
      var sh = ss.insertSheet();
    }
    sh.setName(video.items[0].snippet.title);
    values.push(["name", "date", "comment"]); // Added
    while (true) {
      var comment_list = YouTube.CommentThreads.list('id, replies, snippet', {videoId: video_id, pageToken: PageToken, maxResults: 50});
      for (var j = 0; j < comment_list.items.length; j++) {
        var snippet = comment_list.items[j].snippet.topLevelComment.snippet;
        values.push([snippet.authorDisplayName, snippet.publishedAt, snippet.textDisplay]); // Added
        var replies = comment_list.items[j].replies;
        if (replies) {
          for (var k = 0; k < replies.comments.length; k++) {
            var comments = replies.comments[k].snippet;
            values.push([comments.authorDisplayName, comments.publishedAt, comments.textDisplay]); // Added
          }
        }
      }
      PageToken = comment_list.nextPageToken;
      if (typeof PageToken == "undefined") {
        break
      }
    }
    sh.getRange(1, 1, values.length, values[0].length).setValues(values); // Added
  }
}