即使变量包含数据,Google脚本函数也会返回null

时间:2017-05-05 17:44:24

标签: javascript google-apps-script google-sheets

我正在尝试创建的程序存在一个小问题。它应该计算出将某种能力提升到一定水平所需的exp值。我还没有那么远,因为我在CalculateCost函数结束时遇到了麻烦。我试图将一个字符串数组传递回调用CalculateCost的函数,但是,这不起作用,所以我尝试将所有值连接到一个字符串中。这也行不通。我知道我想要返回的变量不是null,因为我经常使用ui.alert()来检查变量的值。任何帮助将不胜感激。 这是有问题的谷歌表。 https://docs.google.com/spreadsheets/d/1Xo_uppFDI_C65EVi-TZ1iHTseK-Fg1izyCRkeTKaV9k/edit?usp=sharing 有问题的脚本称为能力价格计算器。

1 个答案:

答案 0 :(得分:1)

似乎问题是函数CalculateCost没有返回任何内容......

function CalculateCost(abilityValues,index,level) {
  var ui = SpreadsheetApp.getUi();                                
  var ss = SpreadsheetApp.getActive();                           
  var sheet = ss.getActiveSheet();                                
  ui.alert("CalculateCost");
  FindRequirements(abilityValues,index,sheet,level); 
  // current function returns nothing!  
} 

/* You may have thought, "oh but CalculateCost() already does the return, 
so there's no need". However, when we call a function that contains 
a return, it's as though we just paste the value that it returns. 
Plus, there was no command (alert, prompt, etc) at the end of your 
non-return-function, which made no sense. It made no sense to Google
at least, so it was... undefined. */

所以我把它改成了

function CalculateCost(abilityValues,index,level) {
  var ui = SpreadsheetApp.getUi();                                
  var ss = SpreadsheetApp.getActive();                             
  var sheet = ss.getActiveSheet();                                 
  ui.alert("CalculateCost");
  var reqs = FindRequirements(abilityValues,index,sheet,level); // notice the reqs var   
  return reqs; // this line was missing
} 

此外,我在对代码进行故障排除时遇到了问题:我的主要问题是当我们单击菜单中的CalculateCost时,我们通常希望调用CalculateCost()函数,但实际上我们调用了InputValues()函数。当自定义函数没有绑定到同一菜单项时很容易迷失,所以也许你可以稍后改变它。

如果我的回答能帮助您解决问题,请告诉我吗?