需要帮助,我尝试读取此函数中的单元格。我已经尝试了 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()。(干得好!)
您想为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
只有一个元素。所以你可以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] 删除。
我来说两句