2013-09-17 4 views
0

В сценарии приложений Google я хочу, чтобы иметь возможность вводить целочисленное значение (1-10), а затем изменить сценарий ячейки, где это значение было введено в строку основанный на поиске. По существу, это:Как изменить содержимое активной ячейки

enter image description here

Вот что у меня есть, но он никогда ничего не делает. Я даже не могу получить ячейку, чтобы изменить собственное значение текста.

function onEdit(event){ 
    var sheet = event.source.getActiveSheet(); 
    var editedCell = sheet.getActiveCell(); 
    var editedCellRange = SpreadsheetApp.getActiveSheet().getRange(editedCell); 

    var columnToSortBy = 4; 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var Values = [ss.getRange('I2'),ss.getRange('I3'),ss.getRange('I4'),ss.getRange('I5'),ss.getRange('I6'),ss.getRange('I7'),ss.getRange('I8'),ss.getRange('I9'),ss.getRange('I10'),ss.getRange('I11')]; 
    if(editedCell.getColumn() == columnToSortBy){ 
    editedCellRange.setValue(Values[editedCellRange.getValue()-1]); 
    } 
} 

Так var Values является массив, содержащий строковые значения, которые должны быть отображены. Когда ячейка в 4-м столбце редактируется, чтобы содержать целое число, тогда скрипт должен искать значение этой целочисленной позиции в массиве и затем помещать соответствующую строку в отредактированную ячейку. Может ли кто-нибудь показать мне, что не так с моим сценарием (или лучший способ написать это в скрипте)?

ответ

1

Первый, Values - массив из Range объектов. Когда вы делаете

editedCellRange.setValue(Values[editedCellRange.getValue()-1]);

вы пытаетесь передать Range объект setValue который является неправильным. Итак, я бы изменил его на что-то вроде этого

var range = sheet.getRange("I2:I11"); 
var Values = range.getValues(); 
if(editedCell.getColumn() == columnToSortBy){ 
    var number = parseInt(editedCellRange.getValue()); 
    editedCellRange.setValue(Values[number -1][0]); 
} 
+0

Спасибо! Это сработало, как только я получил право работать! – iamthesgt

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