将 Google 表格评论从单元格提取到新表格

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

我有一个带有 Google Sheet 的库存清单,并使用评论作为交易记录。 然而,它已经达到了极限,我无法添加更多。 是否可以使脚本自动运行它现在拥有的所有注释,并在导出后删除注释? 然后我可以使用新的工作表和 v-lookup 来生成每次发货的交易记录

我做了一些研究,发现下面的应用程序脚本可以将注释从一个工作表导出到另一个工作表。 我已经尝试过了,但它只显示 20 条评论,而且它在库存列表中,而不是我想要的表

以下是库存文件的链接。 https://docs.google.com/spreadsheets/d/1Ssb9zmlg4cixqe7fUcC7Uma1mizI7R3Y_ZETCcq4m-E/edit#gid=436319921

    function listComments() {
      // Change docId into your document's ID
      // See below on how to
      var docId = '1Ssb9zmlg4cixqe7fUcC7Uma1mizI7R3Y_ZETCcq4m-E'; 
      var comments = Drive.Comments.list(docId);
      var hList = [], cList = [];

      // 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 
          hList.unshift([comment.context.value]);
          cList.unshift([comment.content]);
        }
        // Set values to A and B
        var sheet = SpreadsheetApp.getActiveSheet();
        sheet.getRange("A1:A" + hList.length).setValues(hList);
        sheet.getRange("B1:B" + cList.length).setValues(cList);
      }
    }
google-apps-script comments google-sheets-api
1个回答
0
投票

从您的以下回复来看,

那么可以只检索评论然后删除吗?我已经更新了我想要的结果的输出注释表

在这种情况下,下面的示例脚本怎么样?

在这些示例中,使用了 Drive API。因此,请在高级 Google 服务中启用 Drive API。

示例脚本1:

在此示例中,评论是通过 Drive API 的“方法:comments.list”检索的。现阶段无法识别每条评论的单元格坐标。因此,在这种情况下,将从 Google 电子表格中的所有工作表中检索所有评论。

function listComments1() {
  var docId = '1Ssb9zmlg4cixqe7fUcC7Uma1mizI7R3Y_ZETCcq4m-E';

  var res = [];
  var pageToken = "";
  do {
    var comments = Drive.Comments.list(docId, { includeDeleted: false, maxResults: 100, fields: "nextPageToken,items(content,context(value))", pageToken });
    res = [...res, ...comments.items.map(e => [e.content || null])];
    pageToken = comments.nextPageToken;
    console.log({ pageToken, len: comments.items.length, resLen: res.length });
  } while (pageToken);
  if (res.length == 0) return;
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1, 1, res.length).setValues(res);
}
  • 运行此脚本时,将从所有工作表中检索注释,并将检索到的注释放入活动工作表的“A”列中。

示例脚本2:

在此示例中,评论由我的 Google Apps 脚本库的“DocsServiceApp”检索。 Ref 使用此库时,可以从特定工作表中检索注释。

在使用此脚本之前,请安装此库“DocsServiceApp”。您可以在此处查看如何安装它。

function listComments2() {
  var docId = '1Ssb9zmlg4cixqe7fUcC7Uma1mizI7R3Y_ZETCcq4m-E';

  const obj = DocsServiceApp.openBySpreadsheetId(docId).getSheetByName("Current").getComments();
  const res = obj.reduce((ar, { comment }) => {
    if (comment.length > 0) {
      ar = [...ar, ...comment.map(c => [c.comment.trim().replace("----", "").trim()])];
    }
    return ar;
  }, []);
  if (res.length == 0) return;
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1, 1, res.length).setValues(res);
}
  • 运行此脚本时,将从特定工作表中检索注释,并将检索到的注释放入活动工作表的“A”列中。

参考资料:

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