2013-11-09 4 views
0

Я пытаюсь начать работу со сценариями в таблицах Google.Google Spreadsheet сохраняет некоторые значения в других ячейках

Как хранить значения в ячейках? Я пытаюсь использовать setValues, но у меня нет разрешения. Я хотел, чтобы защищенный диапазон ячеек отслеживал все имена, введенные в ячейки, которые имеют эту функцию. В приведенном ниже скрипте сохраняется только одно имя в качестве теста, но оно не работает.

function storeNames(name) { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var storeRange = sheet.getRange(6,2); 
    storeRange.setValues([[name]]); 
    return "Hello " + name; 
} 

Таким образом, в ячейке A1, настроить функцию = storeNames (B1)

Я введите имя в B1 и A1 выдает ошибку, поскольку он не может сохранить имя, введенное в другую ячейку - как сохранить список введенных имен? У каждого есть какие-либо советы по отладке этого - все обычные инструменты javascript не работают, и журнал сценариев сценариев не будет работать для скриптов, выполняемых в электронной таблице, поэтому я лежу слепым.

+0

Вы используете так называемые пользовательские функции, которые являются мощными, но имеют некоторые ограничения, такие как: 'Пользовательские функции возвращают значения, но они не могут установить значение вне ячейки, в которых они находятся .'. Чтобы узнать о них больше, перейдите в следующий раздел документации: [Пользовательские функции в таблицах] (https://developers.google.com/apps-script/execution_custom_functions) – wchiquito

+0

Спасибо, я прочитал «документацию», такую ​​как это. Я не понимаю, почему они предоставляют метод, который вы не можете использовать. Конечно, есть способ установить значения в электронной таблице, учитывая, что есть функция для этого. – Hippyjim

+0

Действительно, метод используется в других контекстах, но, в частности, его невозможно использовать в пользовательских функциях. – wchiquito

ответ

1

Простой пример, это что-то вроде:

/* CODE FOR DEMONSTRATION PURPOSES */ 
function onEdit(e) { 
    var range = e.range, sheet = range.getSheet(); 
    if (sheet.getName() === 'Sheet1' && range.getColumn() === 2) 
    sheet.getRange(range.getRow(), 1).setValue(e.value); 
} 
+0

Отлично, спасибо, теперь я понимаю. – Hippyjim

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