我正在尝试使用ahab的自定义Google Apps脚本myImportRange
。我不熟悉编写自定义脚本,但我按照现有帖子中的说明,将以下内容复制并粘贴到脚本编辑器中:
// 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();
}
我现在收到以下错误:
TypeError:无法调用undefined的方法“split”。 (第6行)
我很抱歉,如果这是一个重复的问题,我发现很多与这个主题相关的主题,不幸的是我知道如果这种事情是如此基本,我无法弄清楚其他答案如何与我的脚本相关。
我非常感谢任何建议!
答案 0 :(得分:0)
由于错误不够清楚,添加类型检查将改善对用户的反馈,如果他们不提供作为字符串的范围。
// 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();
}