清除单元格中的复选框和便笺的Google脚本意外也清除了超链接

时间:2019-02-28 15:28:31

标签: google-apps-script google-sheets

预期的行为::清除所有单元格注释和复选框(将复选框从TRUE转换为FALSE)

实际行为:清除所有单元格注释,复选框和超链接。它留下了格式化为看起来像超链接的文本,但没有实际的链接。

之前:

之后(仅保留文本和格式-链接消失了)

function ResetCheckBoxesAndClearNotesOnDefinedSheets(){
  var tabs = [
    'Checkout',
    'Reception'
  ];

  //LOOP THROUGH TABS LISTED ABOVE
  var ss=SpreadsheetApp.getActiveSpreadsheet();

  for (var k = 0; k < tabs.length; k++) {
    var sheet = ss.getSheetByName(tabs[k]);
    //CLEAR NOTES ON TABS LISTED ABOVE    
    sheet.clearNotes();  

    // CLEAR CHECKBOXES ON TABS LISTED ABOVE
    var dataRange = sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns());
    var values = dataRange.getValues();
    for (var i = 0; i < values.length; i++) {
      for (var j = 0; j < values[i].length; j++) {
        if (values[i][j] === true) {
          values[i][j] = false; // Modified
        }
      }
    }

    dataRange.setValues(values);
  }//end of  sheets loop.
}

如何停止删除超链接?

1 个答案:

答案 0 :(得分:0)

使用链接中的脚本进行查找。谢谢!

function ResetCheckboxesOnSheet() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getDataValidations();
  var cbA=[];
  for(var i=0;i<vA.length;i++) {
    for(var j=0;j<vA[i].length;j++) {
      var rule=vA[i][j];
      if(rule!=null) {
        var criteria = rule.getCriteriaType();
        if(criteria == SpreadsheetApp.DataValidationCriteria.CHECKBOX) {
          sh.getRange(i+1,j+1).setValue(false)

        }
      }
    }
  }
}