用于删除空白或未使用列的Google脚本

时间:2013-09-08 01:57:29

标签: google-apps-script google-sheets

我搜索过但搜索过但找不到有效的东西。我正在尝试消除创建Google表单时保留在电子表格中的任何空列。这将是有帮助的,因为我有一个表格中的字符串比较的总和,但我不希望它包括空单元格的比较。 (即我将每个行中H:X中的条目与H2:X2进行比较,并计算出相同的数量。)我知道我可以调整公式,但我希望为其他同事建立一个模板他们不必担心改变任何事情。如果我可以让最后的空列自动消失,我可以改变总和公式,一直延伸到CZ列(只是为了确保它足够远),而不是在它的比较中计算空白。

任何帮助都会很棒!谢谢!

3 个答案:

答案 0 :(得分:2)

我在google工作表的脚本编辑器中使用这些脚本来清理它们。在某个地方偶然发现了......也许他们会帮忙的。

//Remove All Empty Columns in the Entire Workbook
function removeEmptyColumns() {
  var ss = SpreadsheetApp.getActive();
  var allsheets = ss.getSheets();
  for (var s in allsheets){
    var sheet=allsheets[s]
    var maxColumns = sheet.getMaxColumns(); 
    var lastColumn = sheet.getLastColumn();
    if (maxColumns-lastColumn != 0){
      sheet.deleteColumns(lastColumn+1, maxColumns-lastColumn);
    }
  }
}

//Remove All Empty Rows in the Entire Workbook
function removeEmptyRows() {
  var ss = SpreadsheetApp.getActive();
  var allsheets = ss.getSheets();
  for (var s in allsheets){
    var sheet=allsheets[s]
    var maxRows = sheet.getMaxRows(); 
    var lastRow = sheet.getLastRow();
    if (maxRows-lastRow != 0){
      sheet.deleteRows(lastRow+1, maxRows-lastRow);
    }
  }
}

答案 1 :(得分:0)

这是您在使用Google表单时必须习惯的内容。如果您实际删除行/列,数据永远不会被删除,它们将在未来的某个未知时间重新出现。这是一个非常错误和不可靠的设置。

我的建议是将公式和数据完全分开。您可以通过将表单响应复制到另一个表单(使用代码或其他方式)来完成此操作。该表允许您控制(或未馈送)到系统其余部分的数据。我还要更进一步,使用像

这样的公式
ImportRange(SheetSource!A:A) 

在第3页中,允许您控制列的顺序。从那里你可以添加你的公式来对相对安全的数据进行处理。

然而,不久前我遇到过一种情况,即表格和表格随机丢失了联系,而且无法恢复。我熬夜到早上6点试图解决这个问题,但如果我没有将数据复制到单独的表格(如上所述),那么灾难就已经完成了。

幸运的是,这似乎是一个随机的故障,因为一切都在上午10点左右恢复正常,但简单来说,你的数据并不是真正安全的Google表单。

答案 2 :(得分:0)

使用Arrayformula更适合这一点,尽管它做同样的事情。

实施例: = ARRAYFORMULA('表格回复'!A1:EA)

如果您想从其他电子表格文件中引用工作表,那么Importrange会有一个明显的(并且令人讨厌的)延迟。 Arrayformula引用同一文件中的工作表,没有延迟。