下面的代码为我提供了工作表上的注释数量,而不是注释。我需要一张纸上的评论数量。每张工作表的注释数量显示在工作表选项卡上,但我有很多选项卡,我想以编程方式获得此编号。
类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);
}
有没有办法计算特定工作表上的评论数量?
评论可以转换为笔记然后转换回来吗?
有没有办法以编程方式从工作表标签上显示的数据中获取注释编号?
答案 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
答案 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)
我相信您的目标如下。
不幸的是,在当前阶段,还没有方法可以从Spreadsheet服务,Sheets API和Drive API中直接从Google Spreadsheet的特定工作表中检索评论数。 this thread中也提到了这一点。因此,在这个答案中,我想提出一种解决方法,以使用Google Apps脚本从特定工作表中检索评论数。
在这种解决方法中,我使用从Google Spreadsheet转换的Microsoft Excel数据。即使将Google Spreadsheet转换为Microsoft Excel Data,注释也不会被删除。此替代方法使用这种情况。因此,我建议使用从Spreadsheet转换而来的Excel数据来检索特定工作表中的注释数。此解决方法的流程如下。
当以上流程转换为脚本时,我认为它有点复杂。因此,我将其创建为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);
}
console.log(res)
的日志时,您还可以确认注释,包括特定工作表中的单元格坐标和作者。