需要帮助,我尝试在这个功能中读取一个单元格。我尝试了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”可以通过此功能隐藏一些列。 在工作表“Technic”中,您会找到一个包含返回公式的单元格:“2,3,4 ......” 我尝试使用这个formule像一个变量“hideMyColumns”。
在此我还有另一个更简单的功能:unhideCols()当然。 (运作良好!)
答案 0 :(得分:0)
您想使用函数表达式为cols1
赋值。如果我的理解是正确的,那么这个修改怎么样?
var cols1 = [function getData(){...}]
用作函数表达式时,请修改为var cols1 = [function getData(){...}()]
或var cols1 = [function(){...}()]
。SS
的SS.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
似乎只有一个元素。因此,您可以在不使用for循环的情况下从sh.hideColumns(cols1[i]);
修改为sh.hideColumns(cols1[0]);
。或者当它被声明为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]);
}
}