在编辑时添加和删除单元格边框

Add and remove cell borders on edit

提问人:Ademola 提问时间:10/26/2023 最后编辑:Ademola 更新时间:10/26/2023 访问量:22

问:

我正在尝试在工作表的表格中添加和删除单元格边框,具体取决于单元格是否具有数据。在我的脚本中运行另一个函数后,该表将填充数据。我构造的代码添加了边框,但是,如果单元格返回空,则不会删除边框。此外,它还添加了额外的边框行,而不是单行。例如,如果在单元格 C7 中输入数据,它将在 C7 之后添加 6 行(对于 range2 变量)。如何解决此问题?我在下面提供了我的代码:

function onEdit() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Form Response Data');
const sheet2 = ss.getSheetByName('Data Overview');
const sheet3 = ss.getSheetByName('Summarized Data'); 

var range1 = sheet2.getRange(1,1,sheet2.getLastRow(),10);
var range2 = sheet3.getRange(7,3,sheet3.getLastRow(),5); //.getLastRow method added for last row in table that generates 
var range3 = sheet3.getRange(7,9,sheet3.getLastRow(),5); //.getLastRow method added for last row in table that generates
var value1 = range1.getValues();
var value2 = range2.getValues();
var value3 = range3.getValues();

if (value1 === "") { range1.setBorder(false, false, false, false, false, false);} 
else {range1.setBorder(true, true, true, true, true, true);} 

if (value2 === "") { range2.setBorder(false, false, false, false);} 
else { range2.setBorder(true, true, true, true, true, true);} 

if (value3 === "") { range3.setBorder(false, false, false, false, false, false);} 
else { range3.setBorder(true, true, true, true, true, true);} 
 }
if-statement google-apps-script 边框 google-workspace

评论


答:

0赞 Cooper 10/26/2023 #1

尝试这样的事情:

我使用了一个可安装的触发器。我认为你不需要。我使用它是因为它很容易为我创建。

function onMyEdit(e) {
  e.source.toast("Entry");
  let sh = e.range.getSheet();
  let rg = sh.getDataRange();
  if(sh.getName() == "Sheet0" && e.range.columnStart <= rg.getLastColumn() && e.range.rowStart > 1 ){
    e.source.toast('gate');
    if(!e.value){
      e.range.setBorder(false,false,false,false,false,false);
    } else {
      e.range.setBorder(true,true,true,true,true,true);
    }
  }
}