Reputation: 31
I am trying to use ahab's custom Google Apps Script, myImportRange
. I am not familiar with writing custom scripts but I followed instructions in an existing post, and copied and pasted the following into the script editor:
// to be used in the spreadsheet like ImportRange,
// i.e. like this: =myImportRange( "key" ; "sheet!range" ; GoogleClock() )
// the third parameter - GoogleClock() - triggers an automatic update every minute.
// updated 2011-07-17 (ahab): better regex to strip sheetname of *outer* single quotes
function myImportRange(key ,sheetrange) {
var shra = sheetrange.split("!") ;
if (shra.length==1) shra[1]=shra[0], shra[0]="";
var sheetstring = shra[0].replace( /^'(.*)'$/g , "$1") // was: replace( /'/g , "") ; updated 2011-07-17 (ahab)
var rangestring = shra[1]
var source = SpreadsheetApp.openById( key )
if ( sheetstring.length==0 ) sheet = source.getSheets()[0] ;
else sheet = source.getSheetByName( sheetstring ) ;
return sheet.getRange( rangestring ).getValues();
}
I am now getting the following error:
TypeError: Cannot call method "split" of undefined. (line 6)
I'm sorry if this is a repeat question, I have found many topics related to this subject, unfortunately my knowledge if this kind of thing is so basic, I can't work out how other answers relate to my script.
I'd be very grateful for any advice!
Upvotes: 3
Views: 1324
Reputation: 45750
Since the error isn't clear enough, adding a type check will improve the feedback to the user if they don't provide the range as a string.
// to be used in the spreadsheet like ImportRange,
// i.e. like this: =myImportRange( "key" ; "sheet!range" ; GoogleClock() )
// the third parameter - GoogleClock() - triggers an automatic update every minute.
// updated 2011-07-17 (ahab): better regex to strip sheetname of *outer* single quotes
function myImportRange(key ,sheetrange) {
if (typeof(sheetrange) != "string" throw new Error("range must be a string");
var shra = sheetrange.split("!") ;
if (shra.length==1) shra[1]=shra[0], shra[0]="";
var sheetstring = shra[0].replace( /^'(.*)'$/g , "$1") // was: replace( /'/g , "") ; updated 2011-07-17 (ahab)
var rangestring = shra[1]
var source = SpreadsheetApp.openById( key )
if ( sheetstring.length==0 ) sheet = source.getSheets()[0] ;
else sheet = source.getSheetByName( sheetstring ) ;
return sheet.getRange( rangestring ).getValues();
}
Upvotes: 1