2014-10-18 3 views
0

Я только что протестировал этот скрипт 10 минут назад, он сработал, и теперь он с трудом бросает «служебную ошибку: электронные таблицы».Служебный код setNamedRange приводит к ошибке службы

отладчик не показывает ничего, мне пришлось переключить комментарий gradualy, пока я не нашел строку, которая вызывает ошибку:

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

Сценарий вставили ниже. Есть идеи..?

Спасибо! G

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); 
} 

ответ

0

Я понял, что это вопрос, и это не со скриптом непосредственно, а с тем, что у меня есть значения в namesFlat [] начинаются с знака А «=» [= значение1, = значение2 и т. д.], чтобы создать список проверки данных, который отобразит именованный диапазон при выборе соответствующего значения.

я в конечном итоге добавив это после того, как названные диапазоны созданы:

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

и решить ее.

Является ли это ожидаемым поведением? Неужели невозможно работать с символом = в строках в сценариях?

С благодарностью

Смежные вопросы