Google Apps脚本查找列的底部

问题描述 投票:0回答:1

我需要一些Google Apps脚本的帮助。我在google工作表中工作,目前有以下脚本:

function transpose() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C3:N3').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet21'), true);   
   spreadsheet.getRange("'A/P'!C3:N3").copyTo(spreadsheet.getActiveRange(), 
  SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
}; 

而不是仅仅粘贴在Sheet 21的A1中,我希望它能找到F列的底部。我也想知道如何从我所在的工作表中复制数据,而不仅仅是名为A / P的工作表。

先感谢您!

google-apps-script google-sheets
1个回答
0
投票

您希望将活动工作表中C3:N3的值添加到Sheet21中F列的最后一行的下一行。如果我的理解是正确的,那么这个修改怎么样?

Modification points :

  • 在您的脚本中,如果活动工作表不是Sheet21,则活动范围变为“A1”,因为其他工作表上的spreadsheet.getRange('C3:N3').activate()spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet21'), true)更改。这样,"'A/P'!C3:N3"的值被复制为Sheet21的“A1”。

Flow of modified script:

  • 检索源的范围(活动表)
  • 检索目标(Sheet21)表。
  • 检索目标范围。
  • 复制

Modified script : Pattern 1

如果“Sheet21”中列“F”的最后一行的地址小于其他列的地址,请使用此项。

function transpose() {
  var spreadsheet = SpreadsheetApp.getActive();
  var srcRange = spreadsheet.getActiveSheet().getRange('C3:N3');
  var dstSheet = spreadsheet.getSheetByName('Sheet21');
  var range = dstSheet.getRange('F1:F');
  var values = range.getValues();
  var formulas = range.getFormulas();
  var i;
  for (i = values.length - 1; i >= 0; i--) {
    if (values[i][0] != "" || formulas[i][0] != "") break;
  }
  var dstRange = dstSheet.getRange("F" + (i + 2));
  srcRange.copyTo(dstRange, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
};

Modified script : Pattern 2

如果“Sheet21”中列“F”的最后一行的地址大于或等于其他列的地址,请使用此项。

function transpose() {
  var spreadsheet = SpreadsheetApp.getActive();
  var srcRange = spreadsheet.getActiveSheet().getRange('C3:N3');
  var dstSheet = spreadsheet.getSheetByName('Sheet21');
  var dstRange = dstSheet.getRange("F" + (dstSheet.getLastRow() + 1));
  srcRange.copyTo(dstRange, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
};

如果我误解了你的问题,请告诉我。我想修改它。

© www.soinside.com 2019 - 2024. All rights reserved.