应用脚本集命名范围导致服务错误

时间:2014-10-18 01:11:58

标签: google-apps-script google-sheets

我刚刚在10分钟前测试了这个脚本,它运行起来了,而且现在很热闹它正在抛出“服务错误:Spreadsheets”。

调试器没有显示任何内容,我不得不逐渐切换注释,直到找到触发错误的行:

ss.setNamedRange(namesFlat[j], sheet.getRange(j+2, 26));

下面粘贴的脚本。任何想法..?

谢谢! ģ

function onOpen()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuItems = [{name: "Add Validation", functionName: "createNamedRangesAndVaidation"}]
  ss.addMenu("Script", menuItems);
}

function createNamedRangesAndVaidation() 
{
  var ss, sheet, names, links, dataV, namesFlat, rule;

  ss = SpreadsheetApp.getActiveSpreadsheet();
  sheet = ss.getActiveSheet();
  names = sheet.getRange("y:y").getValues();
  dataV = sheet.getRange("a2");
  namesFlat = []

  for (var i = 1, length = names.length; i < length; i++)
  {
    if (!names[i][0]) break;
    namesFlat.push(names[i][0]);
  }

  for (var j = 0, jlength = namesFlat.length; j < jlength; j++)
  {
    ss.setNamedRange(namesFlat[j], sheet.getRange(j+2, 26));
  }
  rule = SpreadsheetApp.newDataValidation().requireValueInList(namesFlat).build();
  dataV.setDataValidation(rule);
}

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么,而且不是直接使用脚本,而是因为我在namesFlat []中的值以&#39; =&#39;开头。 sign [= value1,= value2等]创建一个数据验证列表,当我们选择相应的值时,它将显示命名范围。

我在创建命名范围后最终添加了这个:

eq = "=";
namesFlat[j] = eq.concat(namesFlat[j]);

并解决了它。

这是预期的行为吗?在scrips中使用字符串中的=字符真的不可能吗?

由于