簡體   English   中英

使用Google腳本刪除電子表格中的空白行

[英]Delete blank rows in spreadsheet using Google script

Spreadsheet-1:Spreadsheet-1中存在的數據,

Name     apple  android   windows    linux
Germany    3      4         6          7
America    4      1         6          2
Sweden     1      6         1          6
Paris      5      0         2          4

Spreadsheet-2:Spreadsheet-2中存在的數據,

Date   Name    apple  android   windows    linux

我可以使用以下Google腳本將數據從電子表格1復制到電子表格2。

function Daily() {
  var SpreadSheetKeyA = "mykey1";
  var SpreadSheetKeyB = "mykey2";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getSheetByName("Showstopper");
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getSheetByName("Daily");
  var data = sheet1.getRange(5,11,40,6).getValues();
  var time = new Date ().toJSON().slice(0,10);;
  for (var r = 0; r < data.length; r++) {
    data[r].unshift(time);
    sheet2.appendRow(data[r]);
    }
}

電子表格1中存在的數據是動態的,即行數可以變化。 現在,每當我再次運行腳本以更新電子表格2時,數據就會被添加到空白行之后。 我想增強上面的腳本,以便它應該避免空白行或僅復制包含數據的行。

誰能幫我這個忙

如果所有空白均位於源的底部,並且數據下方沒有其他內容,則此方法應該起作用。

function triggerOnTime() {
  var SpreadSheetKeyA = "MY key";
  var SpreadSheetKeyB = "MY key";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getSheetByName("Source Name");
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getSheetByName("Target Name");
  var startRow = 5;
  var data = sheet1.getRange(startRow,11,sheet1.getLastRow() - startRow + 1,5).getValues();
  var time = new Date ().toJSON().slice(0,10);;
  for (var r = 0; r < data.length; r++) {
    data[r].unshift(time);
    }
  if(data.length > 0 ) {
    sheet2.insertRowsAfter(sheet2.getLastRow(), data.length);
    sheet2.getRange(sheet2.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
    }
}

如果出於某種原因不能滿足上述條件,並且您需要將行數硬編碼為40,則可以嘗試以下操作:

function triggerOnTime() {
      var SpreadSheetKeyA = "MY key";
      var SpreadSheetKeyB = "MY key";
      var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getSheetByName("Source Name");
      var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getSheetByName("Target Name");
      var startRow = 5;
      var data = sheet1.getRange(5,11,40,6).getValues();
      var time = new Date ().toJSON().slice(0,10);;
      for(var i = data.length - 1; i > -1; i--) {
        if(data[i].join("").length == 0) data.splice(i, 1);
      }
      for (var r = 0; r < data.length; r++) {
        data[r].unshift(time);
        }
  if(data.length > 0 ) {
    sheet2.insertRowsAfter(sheet2.getLastRow(), data.length);
    sheet2.getRange(sheet2.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
    }
    }

暫無
暫無

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

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