Скрипт для копирования частей строки электронной таблицы Google в другую электронную таблицу и добавления значения на основе ячейки - PullRequest
0 голосов
/ 05 сентября 2018

Я очень новичок в кодировании и действительно изо всех сил пишу этот код. Я надеюсь, что кто-то может мне помочь. Вот что я пытаюсь сделать:

Когда в столбце 19 («S») на «Пересмотренном снимке за 2 недели 2018 года для Джима» помещается «y» или «Y», я хочу скопировать столбцы B: G & J: R этой строки.

Поместите эту скопированную строку в другую электронную таблицу с именем «Бухгалтерский учет» с вкладкой «Необработанные данные Acct» в столбцах C: Q.

Затем мне нужно написать в столбце B этой вставленной строки "JT".

Наконец, обновите исходное «y» до «Скопировано».

Вот ссылка на оба тестовых документа, если это помогает.

Снимок за 2 недели

Учет

function myFunction(e) {
  var sourceSheetName = "Reviewed 2018 2 Week Snapshot for Jim";
  var destinationSpreadsheetId = "1l1f6SrN7d6hYDhfv8W_ne15vAd7xSJlC6138jpoXpC4";
  var destinationSheetName = "Unprocessed Acct Data";

  if (e.source.getSheetName() == sourceSheetName && e.range.getcolumn() == 19 && e.value.toUpperCase() == "Y") {
    var sourceValues = e.source.getRange("B:G" && "J:R").getValues().filter(function(e){return e.filter(String).length > 0});
    var tss = SpreadsheetApp.openById(destinationSpreadsheetId);
    var ts = tss.getSheetByName(destinationSheetName);
    ts.getRange(ts.getLastRow() + 1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
  }
}

1 Ответ

0 голосов
/ 05 сентября 2018

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

Очки модификации:

  • Получить значения «B: R» как исходные значения из Reviewed 2018 2 Week Snapshot for Jim.
    • Получаются значения из столбца "B" в столбец "R" строки, в которую было введено Y.
  • Получить значения «B: G» и «J: R» из исходных значений и добавить «JT».
  • Поместите измененные значения в «B: Q» в Unprocessed Acct Data таблицы с идентификатором файла 1l1f6SrN7d6hYDhfv8W_ne15vAd7xSJlC6138jpoXpC4.
  • Изменить Y на Copied на Reviewed 2018 2 Week Snapshot for Jim.

Модифицированный скрипт:

Пожалуйста, измените следующим образом.

От:
if (e.source.getSheetName() == sourceSheetName && e.range.getcolumn() == 19 && e.value.toUpperCase() == "Y") {
  var sourceValues = e.source.getRange("B:G" && "J:R").getValues().filter(function(e){return e.filter(String).length > 0});
  var tss = SpreadsheetApp.openById(destinationSpreadsheetId);
  var ts = tss.getSheetByName(destinationSheetName);
  ts.getRange(ts.getLastRow() + 1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
}
Для того, чтобы:
if (e.source.getSheetName() == sourceSheetName && e.range.getColumn() == 19 && e.value.toUpperCase() == "Y") {
  var row = e.range.getRow();
  var sourceValues = e.source.getRange("B" + row + ":R" + row).getValues()[0];
  var values = [sourceValues.slice(0, 6).concat(sourceValues.slice(8, 17))];
  values[0].unshift("JT");
  var tss = SpreadsheetApp.openById(destinationSpreadsheetId);
  var ts = tss.getSheetByName(destinationSheetName);
  ts.getRange(ts.getLastRow() + 1, 2, values.length, values[0].length).setValues(values);
  e.range.setValue("Copied");
}

Примечание:

  • В вашей общей электронной таблице есть несколько проектов и функций. Поэтому, когда вы используете этот модифицированный скрипт, пожалуйста, дайте новое имя функции (например, это myFunction2(e)) и установите триггер на него. Если имя функции дублируется, скрипт не будет работать правильно.

Если я неправильно понял ваш вопрос, пожалуйста, скажите мне. Я хотел бы изменить его.

...