【问题标题】:passing arguments in google apps script在谷歌应用程序脚本中传递参数
【发布时间】:2018-12-10 09:11:55
【问题描述】:

我正在尝试简化我的谷歌应用程序脚本代码并提高其可读性。为此,我决定编写一个函数来完成这项工作,然后调用该函数并将工作表的名称作为参数包含在内,而不是每次我想在代码中激活一个新工作表时调用 setActiveSheet() 函数这个:

function setSheet (sheetName) {
  var sheetName;
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName(sheetName));
  var sheet = spreadsheet.getActiveSheet();
};

例如,如果我想激活名为“学生”的工作表,我将编写以下简单代码:

setSheet("Students");

上面的代码不起作用。有什么帮助吗?

【问题讨论】:

  • 这与本地和全局变量有关,在 google-apps-script 中这不像往常那么容易。见this SO question
  • 一个更好的问题是为什么你需要使用setActiveSheet 以至于你甚至会想到重构它的用法。您需要更改活动工作表的唯一原因是如果您需要移动用户的视图,或者您要使用的电子表格服务方法只能在活动工作表中调用。对于大多数人来说,情况并非如此。 PS:它不起作用不是有效的问题或问题描述。
  • @tehhowch 我只是在玩代码以更好地掌握背后的逻辑。
  • @Casper 实际上很容易做到。问题是重新声明重置变量的同一个变量。

标签: function google-apps-script arguments parameter-passing


【解决方案1】:

我确实检查了上面的代码,它对我来说很好。我将附上使用的代码sn-p。

function setSheet (sheetName) {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName(sheetName));
  var sheet = spreadsheet.getActiveSheet();
}

function myfunction(){
setSheet("Students");
}

我还注意到在函数终止后使用了一个额外的分号,这不是必需的。

【讨论】:

  • 了解 JavaScript ASI
  • 谢谢它工作正常。我的问题是我在函数内部再次调用了相同的传递变量,这导致重置变量并导致问题。
【解决方案2】:

你为什么要在你的函数中声明一个与你传递的函数参数同名的变量? 这将重置刚刚传递的值。尝试从您的函数中删除 var sheetName;

【讨论】:

  • 一个常见的术语是“影子”
  • 谢谢。这正是我的代码的问题。现在它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多