Google Apps脚本电子表格评论自动化

时间:2013-03-21 19:34:48

标签: comments google-apps-script google-sheets

今天我有一个关于Google Apps脚本的问题,特别是 Spreadsheets 。我已经查看了文档here(是的,电子表格中 Sheet 的文档),但我找不到我想要的内容。这是sitch:

1。)在Google电子表格中编辑单元格时,我使用该函数设置了 NOTE 的功能(是的,它说 cell.setComment(),但实际上它会创建一个Note。感谢您保持一致,Google!):

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

2。)截至2012年9月5日,笔记已被评论“替换”了?也许?我宁愿使用那些。

3.。)对于两种类型的“单元格表示法”,只有 SET 注释/注释,而不是 ADD (根据文档)存在功能。

4.。)我想引用或编写一个能够添加新注释/注释的函数(最好是注释,它们更容易阅读),而不是设置注释/注释。

5.。)您可以通过电子表格中的GUI手动添加注释/注释(右键单击一个单元格并选择“插入注释”或“插入注释”。因为这些右键单击功能存在让我相信我们可以编写一个脚本来做同样的事情,但是在编辑单元格时会自动调用它。

6。)此功能将用于跟踪单元格修订历史记录。我知道我可以创建一个新的电子表格并轻松地将修订历史记录发送到该新电子表格,但考虑到我有10个需要跟踪的电子表格,我宁愿没有10个新的电子表格来跟踪历史记录。将它保存在同一个电子表格中会使事情变得简单。

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

4 个答案:

答案 0 :(得分:11)

无法通过电子表格服务操纵评论 - 请参阅Issue 2566。 (如果你愿意,可以加星标。)

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

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

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);
}

答案 1 :(得分:6)

在Google Apps脚本中使用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 :(得分:1)

更新为dic 2018:

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

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

答案 3 :(得分:0)

现在你可以使用 setNote() 和 getNote()

var sheet = SpreadsheetApp.getActiveSpreadsheet();
 var cell = sheet.getActiveCell();
 var comments = cell.getNote();
 cell.setNote(comments);