0

Я знаю, что есть уже много тем, как у меня, но я совершенно новым для сценариев программирования и поэтому я прошу вас помочь мне с следующей проблемой:Копирование ячейки, если определенное условие встретилось

В ячейке В2 имя пользователя и в ячейке C2 тип подателя - если тип подателя является «Requester», тогда имя пользователя ячейки B2 должно быть скопировано в ячейку AE2 - проблема в том, что я также хочу сохранить предыдущие имена пользователей, если изменение типа отправителя и получает обновленную информацию ...

Это означает, что сначала тип заявителя является «Requester», тогда система должна скопировать имя пользователя в ячейку AE2 - если тип передатчика моей строки изменился, то уже скопированное имя пользователя не должно меняться - unde rstood, что я хочу? Это должно работать для всех строк таблицы ...


Я попытался код, но получил следующее сообщение об ошибке:

error

Может быть, вы можете улучшить код для меня?


Я изменил те 2:

До:

for (var i = 1; i <= numRows; i++) { 

    var userNameCell = rows.getCell(i, userNameColumn); 

    var subTypeCell = rows.getCell(i, subTypeColumn); 

    var sUserNameCell = rows.getCell(i, sUserNameColumn); 

После:

for (var i = 1; i <= numRows; i++) { 

    var userNameCell = rows.getCell(i, userNameColumn); 

    var sUserNameCell = rows.getCell(i, sUserNameColumn); 

    var subTypeCell = rows.getCell(i, subTypeColumn); 

Ошибка сейчас:

new error

Или было неправильное изменение? Может быть, вы имеете в виду, что:

var userNameColumn = 2; //Column where the user name is written 

var subTypeColumn = 5; //Column where the submitter type is written ex. "Requester" 

var sUserNameColumn = 3; //Column where the user name is saved 

Но тогда только один объект (имя пользователя), как известно, вместо 2 раньше - subTypeCell и sUserNameCell снова не определено - что говорит отладчик - код теперь выглядит так (опять-таки с мои изменения, потому что тогда 2 объекта вместо известен только 1):

code

+0

Вы еще что-то пробовали? – Kriggs

+0

Нет, я новичок, у меня нет опыта ;-( –

ответ

0

Вы можете сделать что-то вроде этого:

var userNameColumn = 2; //Column where the user name is written 
var subTypeColumn = 3; //Column where the submitter type is written ex. "Requester" 
var sUserNameColumn = 5; //Column where the user name is saved 

    function saveUserName() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    var rows = sheet.getDataRange(); 
    var numRows = rows.getNumRows(); 

for (var i = 1; i <= numRows; i++) { 

    var userNameCell = rows.getCell(i, userNameColumn); 
    var subTypeCell = rows.getCell(i, subTypeColumn); 
    var sUserNameCell = rows.getCell(i, sUserNameColumn); 

    if(sUserNameCell.isBlank() && subTypeCell.getValue() === 'Requester') { 
    sUserNameCell.setValue(userNameCell) 
    }; 

    } 
} 

Во-первых, это определяет столбцы, с которыми вы работаете, которые являются «Имя пользователя» (в сценарии userNameColumn), столбец с типом «Отправитель» (в сценарии subTypeColumn) и столбец, в котором сохраняется имя пользователя (в скрипте sUserNameColumn). Каждому из них присвоено число, соответствующее столбцам в электронной таблице, где 2 - B, 3 - C и т. Д. Вы можете изменить их на свои нужды.

Затем мы создаем функцию, называемую saveUserName() внутри этой функции. Мы получаем текущую электронную таблицу, мы определяем, какой диапазон в электронной таблице мы будем работать, вот и все, а затем мы получаем количество строк, в которых есть данные.

После этого мы просматриваем данные, которые мы определили, и устанавливаем некоторые переменные, которые мы можем использовать для каждой ячейки.Затем мы создаем наш оператор if, который утверждает, что если «Сохраненная-Имя-Ячейка-ящик» пуста, а «Класс-тип-ящик» = слово «Requester», то мы захватываем «Сохраненный-Имя-Имя-Ячейка» »и установите его значение, равное значению, которое находится внутри« User-Name-Cell ».

Вот и все!

+0

Разве это получилось? –

+0

Пока нет - см. Сообщение от вас к вам –

+0

Хорошо, что это не на английском языке, это говорит что-то вроде «клетки вне диапазона?», Если бы вы могли попробуйте переключить переменные sUser и subType вокруг. –

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