有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript谷歌应用程序脚本在下一个空行中写入数据

通过谷歌应用程序脚本,我从其他电子表格中收集数据。设置为每天收集数据,并将其写入“数据库”中

到目前为止,我有一个基本的解决方案,但这始终是写数据和替换现有数据

在我的脚本中,我想将数据从导入范围电子表格复制到特定列,我想要的是将数据连续复制到下一个空行,但如何在不删除现有复制数据的情况下执行此操作?。请帮忙

var scriptProperties = PropertiesService.getScriptProperties();
var ssid = '1usRuvazJlxAGvF0G2-e00MEQ_AjMCOnWopBFX4qfUcc';
var sheetName = 'DATABASE';

function CopyDatabase() {
  var sheet = SpreadsheetApp.openById(ssid).getSheetByName(sheetName);
  var startRow = 3;
  var numRows = sheet.getLastRow() - 1;
  var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
  var data = dataRange.getValues();
  var Copy = "Copy";
  var newRow = sheet.getLastRow() + 1;
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    if (row[5] != Copy) {
      var Code = row[0];
      var orderDate = row[1];
      var custName = row[2];

      sheet.getRange(startRow + i, 5).setValue(Code);
      sheet.getRange(startRow + i, 6).setValue(orderDate);
      sheet.getRange(startRow + i, 7).setValue(custName);

    }
  }
}

以下是数据库链接(Google sheet):

https://docs.google.com/spreadsheets/d/1usRuvazJlxAGvF0G2-e00MEQ_AjMCOnWopBFX4qfUcc/edit#gid=0

Screenshoot


共 (1) 个答案

  1. # 1 楼答案

    如果我理解正确,您希望将行从列A-D(其中列D不是Copy)复制到列E-H,复制到这些目标列的第一个空行

    如果是这样,你可以:

    代码片段:

    function CopyDatabase() {
      var sheet = SpreadsheetApp.openById(ssid).getSheetByName(sheetName);
      var startRow = 3; 
      var numRows = sheet.getLastRow() - startRow + 1; 
      var startCol = 1;
      var numCols = 4;
      var startColTarget = 5;
      var dataRange = sheet.getRange(startRow, startCol, numRows, numCols); 
      var data = dataRange.getValues(); 
      var Copy = "Copy"; 
      var firstEmptyRow = sheet.getRange("E3:H3").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow() + 1;
      var dataToCopy = data.filter(row => row[3] !== Copy);
      sheet.getRange(firstEmptyRow, startColTarget, dataToCopy.length, dataToCopy[0].length).setValues(dataToCopy);
    }