在 Google 脚本函数中读取单元格并在函数 #inception 中使用它

杰伊

需要帮助,我尝试读取此函数中的单元格。我已经尝试了 20 种不同类型的东西,当我在电子表格上运行 focntion 时,总是出现此错误消息:

留言详情:

无法转换function getData() { Sheet = SS.getSheetByName("Technic"); Range = Sheet.getRange(4, 2); Data = Range.getValue(); }(class).

什么错?

function hideMyColumns()
{
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getActiveSheet();
  var vl = sh.getRange('A30').getValue();
  var cols1 = [ function getData() {
          Sheet = SS.getSheetByName('Technic');
          Range = Sheet.getRange(4, 2); 
          Data = Range.getValue() }];
  var cols2 = [4, 5, 7, 8, 10, 11,]
  switch (vl)
  {
    case 1:
      for (var i = 0; i < cols1.length; i++)
      {
        sh.hideColumns(cols1[i]);
      }
      break;
    case 2:
      for (var i = 0; i < cols2.length; i++)
      {
        sh.hideColumns(cols2[i]);
      }
  }
}

局势演变:

好的,现在功能是这样的:

function hideMyColumns()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var vl=sh.getRange('A30').getValue();
var cols1=[ function() { 
Sheet = ss.getSheetByName('Technic');
Range = Sheet.getRange(2,4);
Data = Range.getValue();
return Data;
}()]; 
var cols2=[4,5,7,8,10,11,12,]
switch(vl)
{
case 1:
  for(var i=0;i<cols1.length;i++)
  {
    sh.hideColumns(cols1[i]);
  }
  break;
  case 2:
  for(var i=0;i<cols2.length;i++)
  {
    sh.hideColumns(cols2[i]);
  }
}

}

上下文 :

电子表格有 2 个工作表:“主要”和“技术”

“Main”可以通过这个函数隐藏一些列。在“技术”表中,您找到一个包含返回公式的单元格:“2,3,4...”我尝试将此公式用作函数“hideMyColumns”中的变量。

在此之下,我还有另一个更简单的功能:当然是 unhideCols()。(干得好!)

Tanaike

您想为cols1使用函数表达式赋予一个值如果我的理解是正确的,这个修改怎么样?

改装要点:

  • 根据你的情况,当var cols1 = [function getData(){...}]用作函数表达式时,请修改为var cols1 = [function getData(){...}()]var cols1 = [function(){...}()]
  • SSSS.getSheetByName('Technic')不宣。
    • getData()运行时,这里发生了错误。
    • 在修改后的脚本处,SS被修改为ss.
  • 中没有返回值getData()
    • 这样,cols1总是变成[]

修改后的脚本:

var cols1 = [ function() { // Modified
  Sheet = ss.getSheetByName('Technic'); // Modified
  Range = Sheet.getRange(4, 2);
  Data = Range.getValue();
  return Data; // Added
}()]; // Modified

笔记 :

  • 在这个修改过的脚本中,只有var cols1被修改了。
  • 如果要使用SS,请声明。
  • 如果要返回其他值,请修改。
  • 从您的脚本来看,它似乎cols1只有一个元素。所以你可以sh.hideColumns(cols1[i]);sh.hideColumns(cols1[0]);没有 for 循环的情况下修改 from 或者当它声明为 时var cols1 = function(){...}(),您可以修改为sh.hideColumns(cols1);不使用 for 循环。

参考 :

如果我误解了你的问题,我很抱歉。

编辑 :

如果您想使用 D 列的值作为范围,请尝试此修改后的脚本。

function hideMyColumns()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var vl=sh.getRange('A30').getValue();
var cols1=function() { // Modified
Sheet = ss.getSheetByName('Technic');
Range = Sheet.getRange(3,4); // getRange(3,4) is D3, Modified
Data = Range.getValue();
return Data.split(","); // Modified
}();
var cols2=[4,5,7,8,10,11,12,]
switch(vl)
{
case 1:
  for(var i=0;i<cols1.length;i++)
  {
    sh.hideColumns(cols1[i]);
  }
  break;
  case 2:
  for(var i=0;i<cols2.length;i++)
  {
    sh.hideColumns(cols2[i]);
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google Apps脚本返回数组值,并在javascript函数中使用它们

工作表单元格中的 Google Apps 脚本 setFormula() 遇到“#REF!” 使用函数 doGet(e) 发出问题

在函数中使用单元格的值从其他工作表中获取数据-Google工作表

使用脚本在Google表格中定义单元格

Google表格-在脚本的OFFSET中使用单元格的值

如何在 Google Sheets 中使用这个 JS 函数?在 var 和 loop 中使用单元格值

如何使用QUERY函数匹配Google表格中不同工作表中的两个单元格?

如何编写模拟GPS位置的Espresso测试,并在Google Testlab中使用它们?

在函数中打开文件并在main中使用它

在函数中创建字典并在子中使用它

使用 Google Apps 脚本填充 Google 文档中的表格单元格

如何从json文件中读取值并在MATLAB plot函数中使用它?

如何在C中使用函数读取数字并在main中使用它?

Google Sheets 使用 onEdit 函数创建随机单元格边框

使用脚本替换Google Spreadsheets中的单元格中的文本

使用Apps脚本返回到某些单元格并使其在Google表格中可编辑

如何使用Apps脚本将值设置为Google表格中的单元格?

使用Google表格脚本在列中查找空单元格

使用 Google Apps 脚本转到工作表中包含今天日期的单元格

使用 Google Apps 脚本删除基于列中重复单元格的行

Google脚本:使用单元格值填充多维数组

通过公式而不是脚本在单元格中使用Google Sheets文件名?

在 Google 表格中使用应用脚本移动单元格的内容

在块回调函数中使用它

返回char []以在strtok()函数中使用它

在 javascript onevent 函数中使用它

使用Google App脚本为Google表格中的单元格分配超链接到Google驱动器文件

添加状态并在反应组件函数中使用它们

获取数组内对象的索引并在函数中使用它