Google apps script 在谷歌脚本函数中读取单元格,并在函数#inception中使用它
需要帮助,我试着读懂这个函数中的一个单元格。我试过20种不同类型的东西, 当我在电子表格上运行Foction时,总是会出现以下错误消息: 信息详情: 无法将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();
函数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]);
}
}