Javascript 如何在所有工作表、谷歌工作表上运行脚本

Javascript 如何在所有工作表、谷歌工作表上运行脚本,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个脚本,可以删除谷歌工作表中的空行。目前它只在我打开的工作表上运行;我希望它在文档中的所有工作表上运行 在花了很长时间尝试应用来自其他人问题的代码之后,我似乎无法让它与我现有的代码一起工作 任何答案都将不胜感激 这是我试图使用的一段代码,但无法运行 function saveRange(){ var tabs = [ 'Sample_tab_1', 'Sample_tab_2', 'Sample_tab_3', 'Sa

我有一个脚本,可以删除谷歌工作表中的空行。目前它只在我打开的工作表上运行;我希望它在文档中的所有工作表上运行

在花了很长时间尝试应用来自其他人问题的代码之后,我似乎无法让它与我现有的代码一起工作

任何答案都将不胜感激

这是我试图使用的一段代码,但无法运行

function saveRange(){
    var tabs = [
        'Sample_tab_1',
        'Sample_tab_2',
        'Sample_tab_3',
        'Sample_tab_4'
    ];

    var ss=SpreadsheetApp.getActiveSpreadsheet();
    for (var i = 0; i < tabs.length; i++) {
        var sheet=ss.getSheetByName(tabs[i]);
        var range=sheet.getRange('A8:AE47').getValues();

        sheet.getRange(sheet.getLastRow()+1, 1, range.length, range[0].length).setValues(range);
    }
  }
函数存储范围(){
变量选项卡=[
“样本选项卡1”,
“样本选项卡2”,
“样本选项卡3”,
“样本选项卡4”
];
var ss=SpreadsheetApp.getActiveSpreadsheet();
对于(变量i=0;i
这是我的作品,但只有在当前的工作表

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var rowsDeleted = 0;
  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    if (row[2] == 0 || row[2] == '') {
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
};


function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Remove rows where column C is 0 or blank",
    functionName : "readRows"
  }];
  sheet.addMenu("Script Center Menu", entries);
};
函数readRows(){
var sheet=SpreadsheetApp.getActiveSheet();
var rows=sheet.getDataRange();
var numRows=rows.getNumRows();
var values=rows.getValues();
var rowsDeleted=0;

对于(var i=0;i您可以尝试此代码段,但请小心,这将清除当前google电子表格中的每个工作表:

function readRows() 
{  
  var spreadsheet = SpreadsheetApp.getActive();
  var ttl = spreadsheet.getSheets().length;
  for (var a=0; a<ttl; a++)
  {
    spreadsheet.getSheets()[a].clear()
    //if you prefer to delete, please replace the above
  }
}
函数readRows()
{  
var电子表格=SpreadsheetApp.getActive();
var ttl=电子表格.getSheets().length;

对于(var a=0;a为了正确了解您的情况,您能否提供有关
不运行
的详细信息这是我尝试使用的一段代码,但它不会运行
?因为我认为
存储范围()
适用于“样本选项卡1”、“样本选项卡2”、“样本选项卡3”和“样本选项卡4”的工作表名称。同上-
保存范围()
工作正常。请引用您收到的确切错误消息。您从示例中克隆的数据将始终仅删除当前工作表中的行,因为您不指定删除其他工作表中的行。您只需使用var sheet=SpreadsheetApp.getActiveSheet()指定唯一的活动工作表即可;您的代码段分配了一些工作表,但在脚本中,您只分配了当前活动的工作表。好的@user11982798有意义的是,是否有一个操作代替了var spreadsheet=SpreadsheetApp.getActive();这将得到所有工作表?+1。为了在工作表上进行迭代,可以使用一个很好的选项。非常感谢您的回复。它确实会删除当前工作表中所有预期的行,但不是在所有工作表上执行相同的操作,而是每隔一个工作表完全清除一行。我只需遵循您的条件行[2]==0 | |行[2]=='',但实际上我不知道你每张表中的内容。我在我的答案中添加了修改功能,请检查并复习
function readRows() 
{
  var spreadsheet = SpreadsheetApp.getActive();
  var ttl = spreadsheet.getSheets().length;
  for (var a=0; a<ttl; a++)
  {
    var sheet = spreadsheet.getSheets()[a];
    var rows = sheet.getDataRange();
    var numRows = rows.getNumRows();
    var values = rows.getValues();
    var rowsDeleted = 0;
    for (var i = 0; i <= numRows - 1; i++) 
    {
        var row = values[i];
        if (row[2] == 0 || row[2] == '') 
        {
           sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
           rowsDeleted++;
        }
    }
  }
};
function readRowsModify() 
{
  var spreadsheet = SpreadsheetApp.getActive();
  var ttl = spreadsheet.getSheets().length;
  for (var a=0; a<ttl; a++)
  {
    var sheet = spreadsheet.getSheets()[a];
    var rows = sheet.getDataRange();
    var numRows = rows.getNumRows();
    var values = rows.getValues();
    //if row 1 is header change i>0 to i>1
    for (var i = numRows; i>0; i--) 
    {
        var row = values[i-1];
        //if in this row, column c is 0 or column c is '' or column c is undifined, 
        //please correct define in this filter to delete row
        if (row[2] == 0 || row[2] == '' || row[2] == undefined) 
        {
           sheet.deleteRow(i);
        }
    }
  }
};