简体   繁体   中英

How do I copy values and paste them into the next available rows on another sheet?

I'm pretty new to google script and am not a coder. I've tried looking up exactly what I need to do but can't find it in google script.

I have formulas in one sheet and need a script to copy values from that table to the next available row(s) on another sheet.

The data is on sheet "Order Info" cells H40 to AC67. I need to copy the values to the next available row on sheet "Distributed Order List", starting in column A, row 2 - if that's relevant.

Here's what I have so far that works, but the problem is that it takes about a minute to run:

function enterorder2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getRange("Order Info!h40:ac40");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h41:ac41");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h42:ac42");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h43:ac43");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h44:ac44");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h45:ac45");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h46:ac46");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h47:ac47");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h48:ac48");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h49:ac49");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h50:ac50");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h51:ac51");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h52:ac52");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h53:ac53");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h54:ac54");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h55:ac55");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h56:ac56");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h57:ac57");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h58:ac58");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h59:ac59");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h60:ac60");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h61:ac61");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h62:ac62");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h63:ac63");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h64:ac64");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h65:ac65");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h66:ac66");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
  var source = ss.getRange("Order Info!h67:ac67");
  var destSheet = ss.getSheetByName("Distributed Order List");
  destSheet.appendRow(source.getValues()[0]);
};

I've tried this, but I don't know how to get my values into this instead of "1,2,3 4,5,6 7,8,9":

function enterorder() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var destSheet = ss.getSheetByName("Distributed Order List");
  var source = [[1,2,3],[4,5,6],[7,8,9]];
  var row = source.length;
  var column = source[0].length;
  destSheet.getRange(destSheet.getLastRow()+1, 1, row, column).setValues(source);
};

Actually you are very close to answer :) .

Hoping there is no other data to be copied from "Order Info" tab's range H40 to AC67 every time you run the script,
I'm using getDataRange() which gets all available data from "Order Info" tab and feeds to var source in your code.

function enterorder() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var destSheet = ss.getSheetByName("Distributed Order List");
//var source = [[1,2,3],[4,5,6],[7,8,9]];
var source = ss.getSheetByName("Order Info").getDataRange(); // data feeding
var row = source.length;
var column = source[0].length;
destSheet.getRange(destSheet.getLastRow()+1, 1, row, column).setValues(source);
};

Hope this helps

Edited:

Then use

var source = ss.getSheetByName("Order Info").getRange("H40:AC67").getValues();

Instead of

var source = ss.getSheetByName("Order Info").getDataRange();

This will create the required range restriction from the source sheet

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM