- 175
- 8
//Functions that copy and paste values
function copyPasteValues(){
var function1 = function(sheet, copyRange, pasteRange){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet)
if(Array.isArray(copyRange) && Array.isArray(pasteRange)){
ss.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
//Should there be a typeof check for string here? (Throwing more errors)
} else{
ss.getRange(copyRange).copyTo(ss.getRange(pasteRange))
}
}
var function2 = function(sourceSheet, targetSheet, copyRange, pasteRange){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
if(Array.isArray(copyRange) && Array.isArray(pasteRange)){
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
} else{
ss.getRange(copyRange).copyTo(sa.getRange(pasteRange))
}
}
var function3 = function(sourceSheet, targetSheet, spreadsheetID, copyRange, pasteRange){
//Pushing data to another spreadsheet and pasting it to another
try{
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.openById(spreadsheetID).getSheetByName(targetSheet)
ss.getRange(copyRange).setValues(sa.getRange(pasteRange).getValues())
//Pulling data from another spreadsheet and pasting it
} catch(e){
if(e instanceof Error){
let ss = SpreadsheetApp.openById(spreadsheetID).getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
ss.getRange(copyRange).setValues(sa.getRange(pasteRange).getValues())
} else{
throw e
}
}
}
var function4 = function(sourceSheet, targetSheet, spreadsheetID, copyRange, pasteRange){
//Pushing data from another spreadsheet and pasting it to another
try{
if(arrayCheck(copyRange, pasteRange)){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.openById(spreadsheetID).getSheetByName(targetSheet)
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
}
//Pulling data from another spreadsheet and pasting it to another
} catch(e){
if(e instanceof Error){
let ss = SpreadsheetApp.openById(spreadsheetID).getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
} else{
throw e
}
}
}
try{
if(arguments.length === 3){
function1(arguments[0], arguments[1], arguments[2])
} else if(arguments.length === 4){
function2(arguments[0], arguments[1], arguments[2], arguments[3])
} else if(arguments.length === 5){
if(Array.isArray(arguments[3]) && Array.isArray(arguments[4])){
function6function4(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4])
} else{
function5function3(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4])
}
}
} catch(e){
Logger.log(e)
}
}
//Functions that copy and paste values
function copyPasteValues(){
var function1 = function(sheet, copyRange, pasteRange){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet)
if(Array.isArray(copyRange) && Array.isArray(pasteRange)){
ss.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
//Should there be a typeof check for string here? (Throwing more errors)
} else{
ss.getRange(copyRange).copyTo(ss.getRange(pasteRange))
}
}
var function2 = function(sourceSheet, targetSheet, copyRange, pasteRange){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
if(Array.isArray(copyRange) && Array.isArray(pasteRange)){
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
} else{
ss.getRange(copyRange).copyTo(sa.getRange(pasteRange))
}
}
var function3 = function(sourceSheet, targetSheet, spreadsheetID, copyRange, pasteRange){
//Pushing data to another spreadsheet and pasting it to another
try{
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.openById(spreadsheetID).getSheetByName(targetSheet)
ss.getRange(copyRange).setValues(sa.getRange(pasteRange).getValues())
//Pulling data from another spreadsheet and pasting it
} catch(e){
if(e instanceof Error){
let ss = SpreadsheetApp.openById(spreadsheetID).getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
ss.getRange(copyRange).setValues(sa.getRange(pasteRange).getValues())
} else{
throw e
}
}
}
var function4 = function(sourceSheet, targetSheet, spreadsheetID, copyRange, pasteRange){
//Pushing data from another spreadsheet and pasting it to another
try{
if(arrayCheck(copyRange, pasteRange)){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.openById(spreadsheetID).getSheetByName(targetSheet)
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
}
//Pulling data from another spreadsheet and pasting it to another
} catch(e){
if(e instanceof Error){
let ss = SpreadsheetApp.openById(spreadsheetID).getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
} else{
throw e
}
}
}
try{
if(arguments.length === 3){
function1(arguments[0], arguments[1], arguments[2])
} else if(arguments.length === 4){
function2(arguments[0], arguments[1], arguments[2], arguments[3])
} else if(arguments.length === 5){
if(Array.isArray(arguments[3]) && Array.isArray(arguments[4])){
function6(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4])
} else{
function5(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4])
}
}
} catch(e){
Logger.log(e)
}
}
//Functions that copy and paste values
function copyPasteValues(){
var function1 = function(sheet, copyRange, pasteRange){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet)
if(Array.isArray(copyRange) && Array.isArray(pasteRange)){
ss.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
//Should there be a typeof check for string here? (Throwing more errors)
} else{
ss.getRange(copyRange).copyTo(ss.getRange(pasteRange))
}
}
var function2 = function(sourceSheet, targetSheet, copyRange, pasteRange){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
if(Array.isArray(copyRange) && Array.isArray(pasteRange)){
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
} else{
ss.getRange(copyRange).copyTo(sa.getRange(pasteRange))
}
}
var function3 = function(sourceSheet, targetSheet, spreadsheetID, copyRange, pasteRange){
//Pushing data to another spreadsheet and pasting it to another
try{
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.openById(spreadsheetID).getSheetByName(targetSheet)
ss.getRange(copyRange).setValues(sa.getRange(pasteRange).getValues())
//Pulling data from another spreadsheet and pasting it
} catch(e){
if(e instanceof Error){
let ss = SpreadsheetApp.openById(spreadsheetID).getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
ss.getRange(copyRange).setValues(sa.getRange(pasteRange).getValues())
} else{
throw e
}
}
}
var function4 = function(sourceSheet, targetSheet, spreadsheetID, copyRange, pasteRange){
//Pushing data from another spreadsheet and pasting it to another
try{
if(arrayCheck(copyRange, pasteRange)){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheet)
let sa = SpreadsheetApp.openById(spreadsheetID).getSheetByName(targetSheet)
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
}
//Pulling data from another spreadsheet and pasting it to another
} catch(e){
if(e instanceof Error){
let ss = SpreadsheetApp.openById(spreadsheetID).getSheetByName(sourceSheet)
let sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheet)
sa.getRange(pasteRange[0], pasteRange[1], copyRange[2], copyRange[3]).setValues(ss.getRange(copyRange[0], copyRange[1], copyRange[2], copyRange[3]).getValues())
} else{
throw e
}
}
}
try{
if(arguments.length === 3){
function1(arguments[0], arguments[1], arguments[2])
} else if(arguments.length === 4){
function2(arguments[0], arguments[1], arguments[2], arguments[3])
} else if(arguments.length === 5){
if(Array.isArray(arguments[3]) && Array.isArray(arguments[4])){
function4(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4])
} else{
function3(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4])
}
}
} catch(e){
Logger.log(e)
}
}
Updated Version (2/37/2023)
Hello, hereHere is an even more updated version of whatone that I feel is more legible and understandable, as the previous updated one was just brute forcing it looks likebased on argument length. It's very crude, but it's closerMost of the checks are going to whatbe used for error handling once I want it to look like/function likefeel comfortable with where the program currently sits
/*function copyValues(){
args[0] = copyRangetry{
args[1] const options = pasteRange{
args[2] = sheet/sourceSheet copy: arguments[0],
args[3] = targetSheet paste: arguments[1],
args[4] = ss_ID source: arguments[2]
*/ }
function copyValues if(arguments.length >= 4){
let args options.target = argumentsarguments[3]
try{
if(argsarguments.length ===>= 35){
let ss options.ss_ID = spreadsheet.getSheetByName(args[2])arguments[4]
}
}
if(ArrayarrayCheck(options.isArraycopy, options.paste)){
switch(args[0]true){
&& Array case arguments.isArraylength === 3:
ss = spreadsheet.getSheetByName(args[1])options.source){
ss.getRange(args[1][0]options.paste[0], args[1][1]options.paste[1], args[0][2]options.copy[2], args[0][3]options.copy[3]).setValues(ss.getRange(args[0][0]options.copy[0], args[0][1]options.copy[1], args[0][2]options.copy[2], args[0][3]options.copy[3]).getValues())
} else if(String(args[0]) === args[0]break;
&& String(args[1]) === args[0]){
sscase arguments.getRangelength === 4:
arrayPaste(args[1])options.setValues(sscopy, options.getRangepaste, spreadsheet.getSheetByName(args[0]options.source), spreadsheet.getValuesgetSheetByName(options.target))
}
}break;
if(args case arguments.length === 4){5:
let ssobj = spreadsheet.getSheetByNamespreadsheetCheck(args[2]options.source, options.target, options.ss_ID)
let sa = spreadsheet.getSheetByName arrayPaste(args[3]options.copy, options.paste, obj.ss, obj.sa)
break;
}
} else if(Array.isArraystringCheck(args[0]options.copy, options.paste)){
&& Array.isArray switch(args[1])true){
case arguments.length === 3:
ss = spreadsheet.getRangegetSheetByName(args[1][0],options.source)
args[1][1], args[0][2], args[0][3] ss.getRange(options.paste).setValues(sass.getRange(args[0][0], args[0][1], args[0][2], args[0][3]options.copy).getValues())
} else if(String(args[0]) === args[0]break;
&& String(args[1]) case arguments.length === args[1]){4:
sa.getRange stringPaste(args[1])options.setValues(sscopy, options.getRangepaste, spreadsheet.getSheetByName(args[0]options.source), spreadsheet.getValuesgetSheetByName(options.target))
}
}break;
if(args case arguments.length === 5){:
let obj = spreadsheetCheck(options.source, options.target, options.ss_ID)
stringPaste(options.copy, options.paste, obj.ss, obj.sa)
}
}
} catch(e){
Logger.log(e)
}
function spreadsheetCheck(source, target, ss_ID){
let ss, sa
switch(true){
if( case SpreadsheetApp.openById(args[4]ss_ID).getSheetByName(args[2]source) === null){:
ss = spreadsheet.getSheetByName(args[2]source);
sa = SpreadsheetApp.openById(args[4]ss_ID).getSheetByName(args[3]target);
} break;
elsecase if(SpreadsheetApp.openById(args[4]ss_ID).getSheetByName(args[3]target) === null){:
ss = SpreadsheetApp.openById(args[4]ss_ID).getSheetByName(args[2]source);
sa = spreadsheetSpreadsheetApp.getActiveSpreadsheet().getSheetByName(args[3]target);
} break;
}
if(Array.isArray(args[0]) && Array.isArray(args[1]))return {ss, sa}
}
function arrayPaste(copy, paste, ss, sa){
sa.getRange(args[1][0]paste[0], args[1][1]paste[1], args[0][2]copy[2], args[0][3]copy[3]).setValues(ss.getRange(args[0][0]copy[0], args[0][1]copy[1], args[0][2]copy[2], args[0][3]copy[3]).getValues())
} else if(String(args[0]) === args[0] &&function StringstringPaste(args[1])copy, ===paste, args[0]ss, sa){
sa.getRange(args[1]paste).setValues(ss.getRange(args[0]copy).getValues())
}
function arrayCheck(copy, paste){
if(Array.isArray(copy) && Array.isArray(paste)){
return true
} else{
return false
}
} catch function stringCheck(ecopy, paste){
Logger.logif(eString(copy) === copy && String(paste) === paste){
return true
} else{
return false
}
}
}
Updated Version (2/3/2023)
Hello, here is an updated version of what it looks like. It's very crude, but it's closer to what I want it to look like/function like
/*
args[0] = copyRange
args[1] = pasteRange
args[2] = sheet/sourceSheet
args[3] = targetSheet
args[4] = ss_ID
*/
function copyValues(){
let args = arguments
try{
if(args.length === 3){
let ss = spreadsheet.getSheetByName(args[2])
if(Array.isArray(args[0]) && Array.isArray(args[1])){
ss.getRange(args[1][0], args[1][1], args[0][2], args[0][3]).setValues(ss.getRange(args[0][0], args[0][1], args[0][2], args[0][3]).getValues())
} else if(String(args[0]) === args[0] && String(args[1]) === args[0]){
ss.getRange(args[1]).setValues(ss.getRange(args[0]).getValues())
}
}
if(args.length === 4){
let ss = spreadsheet.getSheetByName(args[2])
let sa = spreadsheet.getSheetByName(args[3])
if(Array.isArray(args[0]) && Array.isArray(args[1])){
ss.getRange(args[1][0], args[1][1], args[0][2], args[0][3]).setValues(sa.getRange(args[0][0], args[0][1], args[0][2], args[0][3]).getValues)
} else if(String(args[0]) === args[0] && String(args[1]) === args[1]){
sa.getRange(args[1]).setValues(ss.getRange(args[0]).getValues())
}
}
if(args.length === 5){
let ss
let sa
if(SpreadsheetApp.openById(args[4]).getSheetByName(args[2]) === null){
ss = spreadsheet.getSheetByName(args[2]);
sa = SpreadsheetApp.openById(args[4]).getSheetByName(args[3]);
}
else if(SpreadsheetApp.openById(args[4]).getSheetByName(args[3]) === null){
ss = SpreadsheetApp.openById(args[4]).getSheetByName(args[2]);
sa = spreadsheet.getSheetByName(args[3]);
}
if(Array.isArray(args[0]) && Array.isArray(args[1])){
sa.getRange(args[1][0], args[1][1], args[0][2], args[0][3]).setValues(ss.getRange(args[0][0], args[0][1], args[0][2], args[0][3]).getValues())
} else if(String(args[0]) === args[0] && String(args[1]) === args[0]){
sa.getRange(args[1]).setValues(ss.getRange(args[0]).getValues())
}
}
} catch(e){
Logger.log(e)
}
}
Updated Version (2/7/2023)
Here is an even more updated one that I feel is more legible and understandable, as the previous updated one was just brute forcing it based on argument length. Most of the checks are going to be used for error handling once I feel comfortable with where the program currently sits
function copyValues(){
try{
const options = {
copy: arguments[0],
paste: arguments[1],
source: arguments[2]
}
if(arguments.length >= 4){
options.target = arguments[3]
if(arguments.length >= 5){
options.ss_ID = arguments[4]
}
}
if(arrayCheck(options.copy, options.paste)){
switch(true){
case arguments.length === 3:
ss = spreadsheet.getSheetByName(options.source)
ss.getRange(options.paste[0], options.paste[1], options.copy[2], options.copy[3]).setValues(ss.getRange(options.copy[0], options.copy[1], options.copy[2], options.copy[3]).getValues())
break;
case arguments.length === 4:
arrayPaste(options.copy, options.paste, spreadsheet.getSheetByName(options.source), spreadsheet.getSheetByName(options.target))
break;
case arguments.length === 5:
let obj = spreadsheetCheck(options.source, options.target, options.ss_ID)
arrayPaste(options.copy, options.paste, obj.ss, obj.sa)
break;
}
} else if(stringCheck(options.copy, options.paste)){
switch(true){
case arguments.length === 3:
ss = spreadsheet.getSheetByName(options.source)
ss.getRange(options.paste).setValues(ss.getRange(options.copy).getValues())
break;
case arguments.length === 4:
stringPaste(options.copy, options.paste, spreadsheet.getSheetByName(options.source), spreadsheet.getSheetByName(options.target))
break;
case arguments.length === 5:
let obj = spreadsheetCheck(options.source, options.target, options.ss_ID)
stringPaste(options.copy, options.paste, obj.ss, obj.sa)
}
}
} catch(e){
Logger.log(e)
}
function spreadsheetCheck(source, target, ss_ID){
let ss, sa
switch(true){
case SpreadsheetApp.openById(ss_ID).getSheetByName(source) === null:
ss = spreadsheet.getSheetByName(source)
sa = SpreadsheetApp.openById(ss_ID).getSheetByName(target)
break;
case SpreadsheetApp.openById(ss_ID).getSheetByName(target) === null:
ss = SpreadsheetApp.openById(ss_ID).getSheetByName(source)
sa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(target)
break;
}
return {ss, sa}
}
function arrayPaste(copy, paste, ss, sa){
sa.getRange(paste[0], paste[1], copy[2], copy[3]).setValues(ss.getRange(copy[0], copy[1], copy[2], copy[3]).getValues())
} function stringPaste(copy, paste, ss, sa){
sa.getRange(paste).setValues(ss.getRange(copy).getValues())
}
function arrayCheck(copy, paste){
if(Array.isArray(copy) && Array.isArray(paste)){
return true
} else{
return false
}
} function stringCheck(copy, paste){
if(String(copy) === copy && String(paste) === paste){
return true
} else{
return false
}
}
}
Copy and Pasting Values from One Spreadsheet to AnotherSpreadsheets
- 175
- 8