【问题标题】:Copy values from 1 sheet and set values to last row of another sheet从一张纸复制值并将值设置到另一张纸的最后一行
【发布时间】:2021-09-24 12:29:23
【问题描述】:

我知道这已经完成,但我正在努力让我的工作,我想将所有数据从工作表“模板”复制到“历史记录”工作表。

我想在历史记录表底部的新行中发送值。

这是我的工作代码,我只需要更改设置值的位置。

var sheetTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template');
var sheetHistory = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('History');

var getRange = sheetTemplate.getDataRange();
var DataCopied = SRange.getValues();

sheetHistory.getRange("a2:F7").setValues(DataCopied);

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您正在使用getDataRange()getValues() 方法,这将返回二维数组中存在数据的相应值,因此当您使用setValues() 将值复制到新工作表时,您需要考虑检索到的数据的维度以便它们匹配,您需要:

    1. 使用getLastRow() 获取历史记录表的最后可用行
    2. 使用DataCopied.length 获取DataCopied 数组(行数)的“高度”
    3. 获取DataCopied数组的“宽度”(列数)DataCopied[0].length
    4. 使用getRange(row, column, numRows, numColumns) 获取该维度的范围。
    5. DataCopied 的值设置为setValues()

    您的代码应如下所示:

    function myFunction(){
      var sheetTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template');
      var sheetHistory = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('History');
    
      var getRange = sheetTemplate.getDataRange();
      var DataCopied = getRange.getValues();
    
      // I defined the variables for better understanding      
      var startRow = sheetHistory.getLastRow()+1; // +1 because remember that while a range index starts at 1, 1, the JavaScript array will be indexed from [0][0].
      var startColumn = 1;
      var numRows = DataCopied.length;
      var numColumns = DataCopied[0].length;
      sheetHistory.getRange(startRow, startColumn, numRows, numColumns).setValues(DataCopied);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多