簡體   English   中英

嘗試制作宏以刪除Google表格中的最后行數和列數

[英]Trying make a macro to delete last number of rows and columns in google sheets

我正在使用此腳本刪除當前google表格標簽中的最后一行和最后幾列,它顯示了“這些行超出范圍”。 錯誤。 我不知道為什么,當我使用整數而不是第二個參數時,它工作正常。

var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();

//Delete rows 201+
sheet.deleteRows(201, sheet.getLastRow() - 200 );

//Delete Columns 10+
sheet.deleteColumns(10, sheet.getLastColumn() - 9 );

越界錯誤與方法.deleteRows和.deleteColumns有關。 該錯誤是由於嘗試調用一個不存在的范圍而引起的。 無論是因為它試圖調用工作表中最大的單元格數量,還是因為它試圖調用第0個范圍甚至是一個負范圍,都在它的下面。 您無法調用.getRange(0,0),因為它不存在,並且會返回超出范圍的錯誤。 這里的問題是我無法為您提供解決方案,因為我沒有關於如何獲取某些變量的上下文。 我能做的是建議使用其他方法。 從您的代碼判斷,您只想刪除一個行和一個列。 使用.deleteRow(Row)@nd .deleteColumn(Column)可以更輕松地完成操作,這是文檔: https: //developers.google.com/apps-script/reference/spreadsheet/sheet#deleteColumn(Integer https: //developers.google.com/apps-script/reference/spreadsheet/sheet#deleteRow(Integer)如果這不能幫助您創建工作表副本,請刪除所有敏感信息並共享具有編輯權限的鏈接,以便我親自檢查您的代碼和電子表格,以更好地了解您的問題。

這里有一些簡單的腳本可能會對您有所幫助。

function delLastNRows(n){
  var n=n || 3;//allows you to delete last three rows without passing function a parameter.
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var lr=sh.getLastRow();
  if(lr>=n){
    for(var i=0;i<n;i++){
      sh.deleteRow(sh.getLastRow());
    }
  }
}

function delLastNCols(n){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var lc=sh.getLastColumn();
  if(lc>=n){
    for(var i=0;i<n;i++){
      sh.deleteColumn(sh.getLastColumn())
    }
  }
}

我找到了答案的人,我應該使用getMaxRows()來獲取工作表中的總行數,這是我使用的函數。

function delRows51() {
  var ss = SpreadsheetApp.getActiveSheet();
  ss.deleteRows(51, ss.getMaxRows() - 50);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM