3

我正在尝试使用 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:无法调用未定义的方法“拆分”。(第 6 行)

如果这是一个重复的问题,我很抱歉,我发现了许多与这个主题相关的主题,不幸的是,如果这种事情是如此基础,我的知识,我无法弄清楚其他答案与我的脚本有何关系。

我将非常感谢任何建议!

4

1 回答 1

1

由于错误不够清楚,如果用户没有将范围作为字符串提供,添加类型检查将改善对用户的反馈。

// 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(); 
} 
于 2013-05-11T04:23:49.407 回答