如何使用页面令牌将 Google 文档上的大量评论导出到 Google 表格

问题描述 投票:0回答:1

我一直在使用此论坛寻求帮助,编写一个程序,将 Google 文档上的评论导出到 Google Sheet。该程序正在按预期运行,但我最近在尝试导出大量评论时遇到了一个新问题。 Google 脚本默认只能导出 20 条评论。

我在网上发布了这个问题,有人建议我尝试增加可以返回的评论数量。但是,Google Apps 脚本似乎有 100 条评论的限制,而我的项目需要导出远远超过 100 条评论。还有人建议我应该尝试使用页面令牌来完成此任务。

我的原始帖子可以在这里找到:如何将 Google 文档上的 20 条以上评论导出到 Google 表格

我已经阅读了答案,并花了一些时间研究页面令牌,并查看了其他人试图将页面令牌集成到他们的程序中的几篇文章。

不幸的是,我无法弄清楚如何让页面令牌适用于我的代码。我希望有更多经验的人能够向缺乏编码经验的人解释页面令牌如何以“简化”的方式工作,或者他们是否可以提供有关如何更新我的代码以利用页面令牌的建议。

我当前的代码如下所示:

function listComments() {
  // Initialize Variables
  var docId = '1h-BJrklSFgfGNCzdAWziNx5b5EDRjHHJ3DTkXHNhtUE'; 
  var comments = Drive.Comments.list(docId, {fields: "*", maxResults: 100});
  var sList = [], hList = [], cList = [], nList = [], dList = [];

  // Get list of comments
  if (comments.items && comments.items.length > 0) {
    for (var i = 0; i < comments.items.length; i++) {
      var comment = comments.items[i]; 
      // add comment and highlight to array's first element 
      sList.unshift([comment.status]);
      hList.unshift([comment.context.value]);
      cList.unshift([comment.content]);
      nList.unshift([comment.author ? comment.author.displayName : '']);
      dList.unshift([comment.createdDate ? new Date(comment.createdDate).toLocaleString() : '']);
    }
    // Update spreadsheet values 
    var sheet = SpreadsheetApp.openById('1XNJdSRMB1KR9_gpzbd6_rIC6WYpPoExuWkb12Nd1tRI').getSheetByName('Comments');
    sheet.getRange("A2:A" + (sList.length + 1)).setValues(sList);
    sheet.getRange("B2:B" + (hList.length + 1)).setValues(hList);
    sheet.getRange("C2:C" + (cList.length + 1)).setValues(cList);
    sheet.getRange("D2:D" + (nList.length + 1)).setValues(nList);
    sheet.getRange("E2:E" + (dList.length + 1)).setValues(dList);
  }
}

如有任何帮助,我们将不胜感激!

google-sheets google-drive-api google-sheets-api google-docs google-docs-api
1个回答
0
投票

从您的显示脚本中的

if (comments.items && comments.items.length > 0) {
来看,我猜您正在使用Drive API v2。既然如此,下面的修改如何?

修改后的脚本:

function listComments() {
  // Initialize Variables
  var docId = '1h-BJrklSFgfGNCzdAWziNx5b5EDRjHHJ3DTkXHNhtUE'; 

  var comments = [];
  var pageToken = "";
  do {
    var res = Drive.Comments.list(docId, { includeDeleted: false, maxResults: 100, fields: "*", pageToken });
    comments = [...comments, ...res.items];
    pageToken = res.nextPageToken;
  } while (pageToken);
  if (comments.length == 0) return;

  var sList = [], hList = [], cList = [], nList = [], dList = [];

  // Get list of comments
  for (var i = 0; i < comments.length; i++) {
    var comment = comments[i];
    // add comment and highlight to array's first element 
    sList.unshift([comment.status]);
    hList.unshift([comment.context.value]);
    cList.unshift([comment.content]);
    nList.unshift([comment.author ? comment.author.displayName : '']);
    dList.unshift([comment.createdDate ? new Date(comment.createdDate).toLocaleString() : '']);
  }
  // Update spreadsheet values 
  var sheet = SpreadsheetApp.openById('1XNJdSRMB1KR9_gpzbd6_rIC6WYpPoExuWkb12Nd1tRI').getSheetByName('Comments');
  sheet.getRange("A2:A" + (sList.length + 1)).setValues(sList);
  sheet.getRange("B2:B" + (hList.length + 1)).setValues(hList);
  sheet.getRange("C2:C" + (cList.length + 1)).setValues(cList);
  sheet.getRange("D2:D" + (nList.length + 1)).setValues(nList);
  sheet.getRange("E2:E" + (dList.length + 1)).setValues(dList);
}

参考:

© www.soinside.com 2019 - 2024. All rights reserved.