谷歌应用脚本电子表格评论自动化

18

今天我有一个与Google Apps Scripts有关的问题,特别是针对Spreadsheets。我已经查看了这里的文档(是的,在Spreadsheet内部的Sheet上的文档),但我没有找到我要找的内容。这就是情况:

1.) 当在Google电子表格中编辑单元格时,我编写的函数使用cell.setComment()函数设置一个NOTE(实际上是创建一个Note,感谢您保持一致,谷歌!)。

function onEdit() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getActiveSheet();
var cell = sheet.getActiveCell();
cell.setComment("Last modified: + (new Date()));
}

2.) 从2012年9月5日开始,“Notes”已被“Comments”所取代。也许是这个日期?我宁愿使用后者。

3.) 对于两种“单元格符号表示法”,只有用于设置Note/Comment的函数,没有用于添加的(根据文档)。

4.) 我想引用或编写一个具有添加新Note/Comment功能的函数(最好是Comment,因为它们更容易阅读),而不是设置Note/Comment。

5.) 您可以通过电子表格本身的GUI手动添加Note/Comment(右键单击单元格并选择“插入注释”或“插入评论”)。因为存在这些右键功能,我相信我们可以编写一个脚本来完成相同的操作,并在编辑单元格时自动调用它。

6.) 此功能将用于跟踪单元格的修订历史记录。我知道我可以创建一个新的电子表格并将修订历史记录发送到那个新的电子表格中,但考虑到我需要跟踪10个电子表格,我宁愿不要有10个新的电子表格来跟踪历史记录。将其保留在同一电子表格中会使事情更简单。

如果有人能帮我,将不胜感激!

4个回答

17

无法通过电子表格服务操纵评论-请参见问题36756650。(如果您希望,请将其标记为关注。)

相反,所有“评论”方法都适用于“注释”。

以下方法将向任何现有的时间戳添加一个新的“修改”时间戳-不太像实际的评论那样好看,不幸的是。

function onEdit() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var cell = sheet.getActiveCell();
  var comments = cell.getComment();
  // Newline works in msgBox, but not in Note.
  comments = comments + "\\nModified: " + (new Date());
  //Browser.msgBox(comments);
  cell.setComment(comments);
}

哈哈,我现在正在“注释”XD非常感谢您,Mogsdad。我会订阅该问题,以便在修复后更改我的脚本。关于您的代码,我简直不敢相信我错过了这么简单的解决方案...获取旧的“注释”并用换行符附加到它们上。你是个天才,你刚刚让我在工作中的工作变得更加容易! - AnonymousStudent
如何获取评论内容、作者姓名或电子邮件? - TipVisor

10

2018年12月更新:

现在Google支持Range类中的setNote(String)和setNotes(Object[])方法。

getComment()和setComment()方法已不再存在。


我们有没有办法在单元格注释中添加链接? - Jaswinder
@Jaswinder - 很遗憾,我们没有这个功能 - 请参阅最近的问答了解详情。 - Oleg Valter is with Ukraine

8
使用Google Apps Script中的Google Drive API,我们可以在Google文档中创建注释。
经过测试,我确认您也可以在电子表格中进行此操作(这是正常的,因为注释仅取决于Drive API)。
function insertDriveComment(fileId, comment, context) {
  var driveComment = {
    content: comment,
    context: {
      type: 'text/html',
      value: context
    }
  };
  Drive.Comments.insert(driveComment, fileId);  
}

记住,您无法通过编程将评论附加到单元格(或Google文档中的单词),因为文档和电子表格评论的锚点是专有的(请检查页面底部的视频here)。
希望这能有所帮助。

2
现在你可以使用 setNote() 和 getNote()。
var sheet = SpreadsheetApp.getActiveSpreadsheet();
 var cell = sheet.getActiveCell();
 var comments = cell.getNote();
 cell.setNote(comments);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接