Google表格脚本(JavaScript)的多个问题

XiCynx

需要说的是,我对此很陌生,但我会尽力找出所有这些。我现在有一个脚本,该脚本可以主动从整个工作簿中删除所有空行。但我希望有人可以协助将其缩小到该工作簿中的单个表格。

function removeEmptyRows() {
    SpreadsheetApp.getActive()
        .getSheets()
        .forEach(function (s) {
            c = 0;
            s.getRange(1, 1, s.getMaxRows(), s.getMaxColumns())
                .getValues()
                .forEach(function (r, j) {
                    if (r.toString()
                        .replace(/,/g, "")
                        .length == 0) {
                        s.deleteRow((j += 1) - c)
                        c += 1;
                    }
                })
        })
}

理想情况下,我希望在工作簿中仅将一张纸上的空白行“竞速结果”删除。我之所以需要它,是由于电子表格的设置方式以及将多行合并在一起的原因。因此,当我将这些结果复制到另一张纸上时,它们之间存在间隙,我希望将它们删除。这是我用来将数据复制到另一张纸上的脚本。

function Copy() {

 var sss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
 var ss = sss.getSheetByName('Score Card');
 var range = ss.getRange('A32:E36');
 var data = range.getValues();
 var tss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
 var ts = tss.getSheetByName('Race Results');

 ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);

}

如果不把最后一个活动扳手扔进这个巨大的混乱中,我一直在尝试在同一脚本中复制两个不同的单元格范围,我觉得这是不可能的,因为仅复制了后者,而第一个被丢弃了。这是我正在使用的另一个复制脚本,该脚本在此脚本之上运行。

function Copy() {

var sss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
 var ss = sss.getSheetByName('Score Card');
 var range = ss.getRange('A1:A1');
 var data = range.getValues();
 var tss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
 var ts = tss.getSheetByName('Race Results');

 ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);

}

计分卡截图

在一个理想的世界中,我尝试设置以下内容。上面是我们正在使用的记分卡的屏幕截图。我想将当前日期(A1)复制到“竞赛结果”表,然后将最终成绩和团队名称(A32:E36)复制并移动到其正下方的“竞赛结果”表中。完成此操作后,我想删除结果之间的空行,因为到目前为止,这就是复制时的外观。(见下图)

比赛结果截图

在此先感谢任何能够以任何形式或形式协助进行此工作的人。

编辑:从电子表格中删除空行正在按预期的方式工作。即使在给它们不同的名称时,在同一操作中多次复制仍然存在问题。这是我更新的脚本。

function CopyDate() {
  var sss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
  var ss = sss.getSheetByName('Score Card');
  var range = ss.getRange('A1:A1');//This range is only one cell
  var data = range.getValues();
  var tss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
  var ts = tss.getSheetByName('Race Results');  
  ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
}

function CopyScore() {
  var sss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
  var ss = sss.getSheetByName('Score Card');
  var range = ss.getRange('A32:E36');
  var data = range.getValues();
  var tss = SpreadsheetApp.openById('18cl69Id4saI455wk__-PhvfxXZa7iWlQpoiRKqBz6bU');
  var ts = tss.getSheetByName('Race Results');  
  ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
}

function delBlankRows(shtname){
  var shtname=shtname || 'Race Results';
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName(shtname);
  var rg=sh.getRange(1,1,sh.getMaxRows(),sh.getLastColumn());
  var vA=rg.getValues();
  var n=0;
  for(var i=0;i<vA.length;i++){
    if(!vA[i].join("")){
      sh.deleteRow(i-n+1);
      n++;
    }
  }
}

function Sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

function SaveRaceResults() {
  CopyDate();
  Sleep(5000);
  CopyScore();
  Sleep(5000);
  delBlankRows();
}
库珀

删除工作表上的所有空白行

function delBlankRows(shtname){
  var shtname=shtname || 'Sheet1';
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName(shtname);
  var rg=sh.getRange(1,1,sh.getMaxRows(),sh.getLastColumn());
  var vA=rg.getValues();
  var n=0;
  for(var i=0;i<vA.length;i++){
    if(!vA[i].join("")){
      sh.deleteRow(i-n+1);
      n++;
    }
  }
}

复制功能:

function Copy() {
  var sss = SpreadsheetApp.getActive();
  var ss1 = sss.getSheetByName('Score Card');
  var range1 = ss1.getRange('A1');//This range is only one cell
  var data1 = range1.getValues();
  var ts1 = sss.getSheetByName('Race Results');  
  ts1.getRange(ts1.getLastRow()+1, 1, data1.length, data1[0].length).setValues(data1);
  var ss2 = sss.getSheetByName('Score Card');
  var range2 = ss2.getRange('A32:E36');
  var data2 = range2.getValues();
  var ts2 = sss.getSheetByName('Race Results');  
  ts2.getRange(ts2.getLastRow()+1, 1, data2.length, data2[0].length).setValues(data2);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google 表格脚本的条件问题

Google表格:Mailto脚本问题

Google表格脚本getRange参数问题

应用脚本新的 Google 表格创建问题

Google 表格脚本:在 Indexof 中使用多个值

通过脚本从多个列中复制值-Google表格

优化脚本从多个Google表格中提取数据

如果功能具有多个条件,则 Google 表格脚本

Google 表格:包含多个问题的表单编辑修复了重复的答案

Google Apps脚本-如何将此代码应用于Google表格中的多个表格

Google脚本写入表格

Google表格脚本getLastRow

Javascript HideRows(Google表格脚本编辑器)

Google表格抄写问题

Google 电子表格中的多个项目与多个脚本文件

javascript表格发送问题

使用Google脚本循环浏览多个Google电子表格

用于Google表格中多个查找和替换的Google Apps脚本

如何使用Google App脚本合并Google电子表格中的多个标签?

Google Apps脚本多个在Google表格中查找和替换正则表达式

在Google脚本中从多个Google表格中查询的最佳方法是:索引列

用于从 Gmail 中提取数据并在 Google 表格中填充多个匹配行的 Google Apps 脚本

Google表格脚本按表格名称过滤

在Google表格中复制无效表格的脚本

Google 表格的脚本时间限制

使用脚本共享Google表格

“服务错误:电子表格”错误-保护类的Google脚本问题

Google表格保护脚本问题-无法读取未定义的属性“ getRange”

Google脚本:通过触发器处理时,电子表格更新存在问题