【问题标题】:Google Apps Script Find bottom of columnGoogle Apps 脚本查找列底部
【发布时间】:2018-07-10 11:13:26
【问题描述】:

我需要一些有关 Google Apps 脚本的帮助。我正在使用谷歌表格,目前有以下脚本:

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);
}; 

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

提前谢谢你!

【问题讨论】:

  • 要查找 F 列的底部,您可以使用 sheet.getLastRow() 函数获取工作表中包含一些数据的最后一行。要从需要使用不同变量的任何工作表复制,例如:var sourceSheet = spreadsheet.getSheetByName('which ever sheet you want the data from'),然后使用 sourceSheet.getRange('C3:N3').copyTo(destinationSheet.getRange('C3:N3'))
  • 这些新行在哪里/它们在我当前的代码中替换了什么?

标签: google-apps-script google-sheets


【解决方案1】:

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

修改点:

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

修改脚本流程:

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

修改后的脚本:模式 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);
};

修改后的脚本:模式 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);
};

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

【讨论】:

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