Как мне управлять расположением выходной ячейки в листе Google с помощью скрипта Google? - PullRequest
0 голосов
/ 31 декабря 2018

Я работаю над сценарием для листа Google и изучаю сценарии с нуля.

Я использовал следующий сценарий и успешно изменил столбец ввода, но вывод остался в столбце A. Я хочувывод перейти к столбцу T и строка должна оставаться неизменной.

Тип триггера хороший, но он работает на всех листах, поэтому мне нужно ограничить количество листов, на которых он работает. Как заставить скрипт работать в одной конкретной комбинации листов и вкладок?

Пока я спрашиваю об изменении вывода на один столбец, можете ли вы объяснить общий метод определения выходного столбца и строки?

Заранее спасибо.

Код, вотТочный сценарий я использую.После запуска сценария в редакторе в строке 3 выдается сообщение об ошибке: «var eventRange = event.range;»

, который останавливается, если я удаляю квотирования вокруг имени листа «тикет для доставки» в строке 6. но я получаю новую ошибку, когда запускаю сценарий в строке 6 «который отсутствует» после условия,строка 6 ". Вот код, с которым я работаю и который был написан другим постером.

function onEdit(event) {

  var eventRange = event.range;
  var sheetName = eventRange.getSheet().getName();

  if (eventRange.getColumn() == 14 && sheetName == 'tickets to deliver') {

//if (eventRange.getColumn() == 14 && sheetName.match(/sheetName1|sheetName2/)) {

    // getRange(row, column, numRows, numColumns)
    var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 21, eventRange.getNumRows(), 1);
    //second parameter changed from '1' to '21'. 21 represents column 'U'

    var values = columnXRange.getValues();

    for (var i = 0; i < values.length; i++) {
      if (!values[i][0]) {
        values[i][0] = new Date();
      }
    }
    columnXRange.setValues(values);
  }
}

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вы можете управлять листами, на которые воздействует скрипт, проверив имя листа.Ниже представлены два варианта.

  1. Первый - точное совпадение имени листа со строкой.
  2. Второй (закомментированный) - сопоставление имени листа с регулярным выражением..

Ниже приведена настройка колонки от A до T.

function onEdit(event) {

  var eventRange = event.range;
  var sheetName = eventRange.getSheet().getName();

  if (eventRange.getColumn() == 14 && sheetName == 'yourSheetNameHere') {

//if (eventRange.getColumn() == 14 && sheetName.match(/sheetName1|sheetName2/)) {

    // getRange(row, column, numRows, numColumns)
    var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 20, eventRange.getNumRows(), 1);
    //second parameter changed from '1' to '20'. 20 represents column 'T'

    var values = columnXRange.getValues();

    for (var i = 0; i < values.length; i++) {
      if (!values[i][0]) {
        values[i][0] = new Date();
      }
    }
    columnXRange.setValues(values);
  }
}

EDIT

После нашего разговора я запрыгнул накомпьютер для проверки скрипта.

Вот мой рабочий скрипт.(Только что удалил комментарии) Не должно быть никаких изменений в реальном скрипте.

Также, пожалуйста, обратите внимание, что вы не можете просто использовать функцию отладки как есть, когда тестируете функцию onEdit или onChange, для которой требуется объект события.Если вы собираетесь использовать отладку, в этой функции вам нужно изменить строку 3 на var eventRange = SpreadsheetApp.getActive.getActiveRange();.

Обратите внимание, что тестовая строка имени листа должна быть точной и чувствительной к регистру..

Snip of sheet names

function onEdit(event) {

  var eventRange = event.range;
  var sheetName = eventRange.getSheet().getName();

  if (eventRange.getColumn() == 14 && sheetName == 'tickets to deliver') {

    var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 21, eventRange.getNumRows(), 1);

    var values = columnXRange.getValues();

    for (var i = 0; i < values.length; i++) {
      if (!values[i][0]) {
        values[i][0] = new Date();
      }
    }
    columnXRange.setValues(values);
  }
}
0 голосов
/ 31 декабря 2018

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

Измените , 1, на , 20,.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...