首页 > 解决方案 > 如何在谷歌电子表格中连续写入注释

问题描述

嗨,我试图了解如何在连续写入时打开新笔记。

在我的 googlespreadsheet 中,我有 10 列(从 U 到 AT 列)来写东西。当我在一个空行中添加一个新数据时,我需要当我完成数据的放置时,然后会打开一个盒子笔记来写它。

我发现下一个对编辑很有用的代码,但我需要一次插入不在编辑中的数据。

    function onEdit() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getActiveSheet();
var cell = sheet.getActiveCell();
cell.setComment(" ");
}

标签: google-apps-scriptgoogle-sheetsspreadsheet

解决方案


您需要一个 IF 语句来检查最后一行是否为“完成”列 U 到 UT 是否有值

感谢 SO 用户 moogsdad 在 U 列中找到最后一行

var Uvals = ss.getRange("U1:U").getValues();
var Ulast = Uvals.filter(String).length;

试试下面的代码。我没有测试过它,所以它可能在某处缺少分号或大括号。

function onEdit() {

  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = doc.getActiveSheet();
  var cell = sheet.getActiveCell();
  // get last row on column U
  var Uvals = sheet.getRange("U1:U").getValues();
  var Ulast = Uvals.filter(String).length;

  // check is the row being edited matches the last row
  if (cell.getRow() == Ulast) {

    var updateRange = sheet.getRange("U"+Ulast+":AT"+Ulast);
    var UpdateValues = range.getValues();
    var isComplete = true;

    // should loop through all cells in you update range and set isComplete to false is any are blank.
    for (var row in UpdateValues ) {
     for (var col in UpdateValues[row]) {
       if (UpdateValues[row][col] == '') {
          isComplete = false;
       }
     }

     // if all cells complete then set comment
     if (isComplete == true) {
       cell.setComment(" ");
     }

  } // end if edited row matches last row in U

} // end of function

推荐阅读