Google apps script 在谷歌脚本函数中读取单元格,并在函数#inception中使用它

Google apps script 在谷歌脚本函数中读取单元格,并在函数#inception中使用它,google-apps-script,google-sheets,Google Apps Script,Google Sheets,需要帮助,我试着读懂这个函数中的一个单元格。我试过20种不同类型的东西, 当我在电子表格上运行Foction时,总是会出现以下错误消息: 信息详情: 无法将函数getData(){Sheet=SS.getSheetByName(“Technic”);Range=Sheet.getRange(4,2);Data=Range.getValue();}转换为(类) 怎么了 function hideMyColumns() { var ss = SpreadsheetApp.getActive();

需要帮助,我试着读懂这个函数中的一个单元格。我试过20种不同类型的东西, 当我在电子表格上运行Foction时,总是会出现以下错误消息:

信息详情:

无法将
函数getData(){Sheet=SS.getSheetByName(“Technic”);Range=Sheet.getRange(4,2);Data=Range.getValue();}
转换为
(类)

怎么了

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]);
      }
  }
}
函数hideMyColumns()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var vl=sh.getRange('A30').getValue();
var cols1=[函数getData(){
Sheet=SS.getSheetByName('Technic');
Range=Sheet.getRange(4,2);
Data=Range.getValue()}];
var cols2=[4,5,7,8,10,11,]
开关(vl)
{
案例1:
对于(var i=0;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]);
  }
}

}
函数hideMyColumns()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var vl=sh.getRange('A30').getValue();
var cols1=[function(){
Sheet=ss.getSheetByName('Technic');
范围=表。getRange(2,4);
Data=Range.getValue();
返回数据;
}()]; 
var cols2=[4,5,7,8,10,11,12,]
开关(vl)
{
案例1:

对于(var i=0;i您想使用函数表达式为
cols1
赋值。如果我的理解是正确的,这个修改如何

修改点:
  • 在您的情况下,当函数表达式使用
    var cols1=[function getData(){…}]
    时,请修改为
    var cols1=[function getData(){…}()]
    var cols1=[function(){…}()]
  • SS的
    SS
    。getSheetByName('Technic')
    未声明。
    • 当运行
      getData()
      时,此处会发生错误
    • 在修改后的脚本中,
      SS
      被修改为
      SS
  • getData()
    中没有返回值。
    • 这样,
      cols1
      总是变成
      []
修改脚本: 注:
  • 在此修改的脚本中,仅修改了
    var cols1
  • 如果您想使用
    SS
    ,请声明
  • 如果要返回其他值,请修改它
  • 从您的脚本来看,
    cols1
    似乎只有一个元素。因此您可以将
    sh.hideColumns(cols1[i]);
    修改为
    sh.hideColumns(cols1[0]);
    而不使用for循环。或者当它声明为
    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]);
  }
}
函数hideMyColumns()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var vl=sh.getRange('A30').getValue();
var cols1=函数(){//Modified
Sheet=ss.getSheetByName('Technic');
Range=Sheet.getRange(3,4);//getRange(3,4)是D3,已修改
Data=Range.getValue();
返回数据。拆分(“,”;//已修改
}();
var cols2=[4,5,7,8,10,11,12,]
开关(vl)
{
案例1:

对于(var i=0;错误信息非常清楚-Google Apps脚本不支持以您尝试的方式将函数定义为数组元素。此外,该函数甚至不做任何事情-如果要执行,它将只读取一个值,然后丢弃该值-实际上相当于甚至没有写入。我们是越来越近!我们越来越近!错误消息已更改,现在函数已读取单元格的内容。但仍然不起作用。出现新的错误消息。:无法将6,7,8,10,11,12,13,14转换为(类)。抱歉,我不太清楚,我刚刚发现了谷歌电子表格的这一部分,这对我来说是一个全新的世界。@C.Jay你能给我们看看你的最新脚本吗?如果可以,请将它添加到你的问题中。在我的环境中,当你的脚本被我的答案修改时,不会发生错误。我只是在另一个答案中发布它,因为评论是简短的。@C.Jay您发布了一个问题作为答案。请使用“编辑”按钮将其添加到您的问题中,然后删除该答案。如果这是您的答案,我很抱歉。
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]);
  }
}