计算特定工作表上的注释数

时间:2015-11-06 23:37:54

标签: google-apps-script google-sheets

下面的代码为我提供了工作表上的注释数量,而不是注释。我需要一张纸上的评论数量。每张工作表的注释数量显示在工作表选项卡上,但我有很多选项卡,我想以编程方式获得此编号。

range中有注释方法,但没有处于注释状态的非弃用方法。 人们已将此作为issue

function getCommentNumber() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange("A1:A12");
  var results = range.getNotes();
  Logger.log(results);
  var commentNumber = 0;
  for ( i in results) {
    if (results[i] != ""){
    commentNumber += 1;
     }
  }
  Logger.log(commentNumber);
 }

有没有办法计算特定工作表上的评论数量?

评论可以转换为笔记然后转换回来吗?

有没有办法以编程方式从工作表标签上显示的数据中获取注释编号?

3 个答案:

答案 0 :(得分:1)

您可以尝试启用Google Drive API吗?

function countComments() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var commentsList = Drive.Comments.list(sheet.getId());
  Logger.log(commentsList.items.length);
}

以上代码将为您提供与电子表格相关的所有评论。获得列表后,您可以处理响应以检查您感兴趣的评论。 需要从Resources -> Advanced Google services

启用Google Drive API

答案 1 :(得分:0)

这是一种解决方法。

创建评论时,会发送电子邮件。 所以我要求Gmail APU提供一些我知道的文字是评论模板化的电子邮件。 这个例子从一张表中获取数据,其中包含我想知道他们有多少评论的所有表格的主信息。

function countComments(){
  var data = SpreadsheetApp.getActiveSheet()
    .getDataRange()  // Get all non-blank cell    
    .getValues()
    .splice(1);// Remove header line 

  //for each row I construct the file name of spreadsheet and then ask Gmail
  for (var i = 0; i < data.length; i++) {
    var id = data[i][0];
    var horario = data[i][3];
    var fileName = horario + "#" + id;
    var query = "category:updates \"" + fileName + "\" -{Marcado como resuelto}";
    var threads = GmailApp.search(query); 
    Logger.log(fileName +": "+ threads.length);

  }
}

我原告西班牙语,所以请原谅我的英语,我不知道评论模板是用英语写的。

答案 2 :(得分:0)

我相信您的目标如下。

  • 您要使用Google Apps脚本检索Google电子表格中特定工作表的注释数。

问题和解决方法:

不幸的是,在当前阶段,还没有方法可以从Spreadsheet服务,Sheets API和Drive API中直接从Google Spreadsheet的特定工作表中检索评论数。 this thread中也提到了这一点。因此,在这个答案中,我想提出一种解决方法,以使用Google Apps脚本从特定工作表中检索评论数。

在这种解决方法中,我使用从Google Spreadsheet转换的Microsoft Excel数据。即使将Google Spreadsheet转换为Microsoft Excel Data,注释也不会被删除。此替代方法使用这种情况。因此,我建议使用从Spreadsheet转换而来的Excel数据来检索特定工作表中的注释数。此解决方法的流程如下。

  1. 使用云端硬盘API将Google Spreadsheet转换为Microsoft Excel(XLSX数据)。
  2. 使用Google Apps脚本解析XLSX数据。
    • 解压缩转换后的XLSX数据后,可以将其分析为XML数据。幸运的是,在Microsoft Docs,详细规范以Open XML的形式发布。因此,在这种情况下,可以使用Google Apps脚本的XmlService分析XLSX数据。
  3. 使用工作表名称从分析的XLSX数据中获取评论数。

当以上流程转换为脚本时,我认为它有点复杂。因此,我将其创建为Google Apps脚本库(DocsServiceApp(作者为tanaike。))。

示例脚本:

在使用此脚本之前,请安装DocsServiceApp的Google Apps脚本库。

function myFunction() {
  const sheetName = "Sheet1"; // Please set the sheet name.
  const spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId(); // Please set Spreadsheet ID.
  const res = DocsServiceApp.openBySpreadsheetId(spreadsheetId).getSheetByName(sheetName).getComments();
  console.log(res.length);
}
  • 在此脚本中,检索了活动电子表格上“ Sheet1”的注释数。
  • 当您看到console.log(res)的日志时,您还可以确认注释,​​包括特定工作表中的单元格坐标和作者。

注意:

  • 请在启用V8的情况下使用此脚本。
  • 如果发生与Drive API相关的错误,请在Advanced Google服务中启用Drive API。 Ref

参考文献: