Javascript 谷歌脚本中的函数

Javascript 谷歌脚本中的函数,javascript,google-apps-script,Javascript,Google Apps Script,我试图缩短gs的基本代码 function quantityAnalysis (){ var subscription = magicSheet("dataRaw","Subscription"); var idCol = msCol(subscription,"Subscription Id"); var xlCol = msCol(subscription,"XL"); var goCol =

我试图缩短gs的基本代码

function quantityAnalysis (){
  var subscription = magicSheet("dataRaw","Subscription");

  var idCol = msCol(subscription,"Subscription Id");
  var xlCol = msCol(subscription,"XL");
  var goCol = msGoCol(idCol,xlCol);
  var lastRow = msLastRow(subscription);

  var dataToFilter = subscription
  .getRange(1,idCol,lastRow,goCol)
  .getValues();
}
**在第二个文件中**

function magicSheet (ssName,sheet="full"){
  //return sheet
    let id = sMagicSearch("id",ssName);
    if(sheet=="full"){
      return SpreadsheetApp.openById(id);
    }else{
      return SpreadsheetApp.openById(id).getSheetByName(sheet);
    }
  //end return sheet
}
在我这么做之前它一直在工作

var subscription = magicSheet("dataRaw","Subscription");

function quantityAnalysis (){
  var idCol = msCol(subscription,"Subscription Id");
  var xlCol = msCol(subscription,"XL");
  var goCol = msGoCol(idCol,xlCol);
}
错误:未定义magicSheet

还有一件事要说: 订阅功能用于在一个或多个功能中将值打印到工作表中

(从另一个文件调用函数正在工作, 但将同一个变量作为全局变量调用是行不通的)。

问题: 全局语句(例如声明全局变量、在任何函数声明之外调用函数)在您决定执行的函数之前执行。它们似乎也是按顺序执行的,一个脚本文件接着一个脚本文件

在这种情况下,
var subscription=magicSheet(“dataRaw”、“subscription”),在声明
magicSheet
之前执行(在第二个文件中)。因此,它没有找到这个函数

解决方案: 可以像刚才那样将全局语句(调用
magicSheet
)包装到函数中,也可以使用类似以下操作:

function getSubscription() {
  return magicSheet("dataRaw","Subscription");
}
或者更改文件的顺序,将第二个文件移动到第一个文件的顶部(在新的IDE中,单击第二个文件的垂直三点,然后单击
向上移动文件


无论如何,我不认为使用全局语句引用其他文件中的对象是一种好的做法,所以我只想将该语句包装在函数中。

非常感谢@lamblichus。我明白了!