获取单元格中注释的最后一行或第一行并将其添加

时间:2019-07-09 19:32:59

标签: google-apps-script google-sheets

听起来超级简单,但我无法弄清楚。我有一个脚本,用于更新内置在单元格中的注释。问题是我希望它以注释为基础。因此,获取便笺的最后一行还是获取第一行,对我而言,格式化的格式都无关紧要。问题在于它覆盖了先前的注释。

function Note() {
  var spreadsheet = SpreadsheetApp.getActive();
  var timezone = Utilities.formatDate(new Date(), "GMT-4", "M/dd/yy', 'h:mm a"); // Get the current time;
  spreadsheet.getActiveRange().setNote('Notes:\n\n-updated file on ' + timezone + '\n\n' + '-');
};

理想情况下,我希望将此注释放在注释的顶部,而不要覆盖注释的任何其他部分。这样,如果您愿意,它只是运行中的笔记或日志。我将把它添加到我正在运行的许多其他功能中,以便每次在该文件上运行一个功能时都有一个日志。

2 个答案:

答案 0 :(得分:0)

尝试一下:

function appendNote(note) {
  if(!note) {
    var response=SpreadsheetApp.getUi().prompt("Append a note:")
    var note=response.getResponseText();
  }
  if(note) {
    var ss=SpreadsheetApp.getActive();
    var sh=ss.getActiveSheet();
    var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(), "yyyyMMdd HH:mm:ss");
    sh.getActiveRange().setNote(ts + note + '\n\n' + sh.getActiveRange().getNote());
  }
}

答案 1 :(得分:0)

这对我有用。只需检查注释是否存在,如果存在,则重写注释,但是在添加新文本之前。

function Note() {
  var spreadsheet = SpreadsheetApp.getActive();
  var ss = spreadsheet.getSheets()[0];
  var timezone = Utilities.formatDate(new Date(), "GMT-4", "M/dd/yy', 'h:mm a"); // Get the current time;
  var range = ss.getActiveRange();
  var note = range.getNote();

  if (note) {
    note = note + '\n\n-updated file on ' + timezone + '\n\n';
    range.setNote(note);

  }else {
    range.setNote('Notes:\n\n-updated file on ' + timezone + '\n\n'); 
    }

}