Листы Google перемещают строки в зависимости от значения И редактируют значения - PullRequest
0 голосов
/ 18 декабря 2018

Я давно читаю ответы по стеку и, наконец, решил присоединиться!Итак, вот мой первый вопрос:

Я нашел здесь скрипт приложений Google для листов Google, который перемещает строку на другой лист в зависимости от значения ячейки.Это замечательно.Я протестировал его, и он работает для меня с несколькими изменениями - сначала использовать флажок, а затем скопировать все столбцы, кроме 1-го столбца, с флажком.

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

Так было бы так:

  1. , еслиФлажок = true, затем скопировать строку, все столбцы, кроме флажка
  2. Установить значение 'location' в 'Лондон' (например, столбец 8)
  3. Установить значение 'date' на сегодня (столбец12 например)
  4. Добавить отредактированную строку в новый лист внизу

Может кто-нибудь помочь мне добиться этого?Я предполагаю, что это должно быть довольно просто, но я новичок в скрипте приложений, поэтому не знаю, как я это сделаю.

Вот основной скрипт для перемещения строки, которую я нашел из поста 2011 годаздесь:

function onEdit(event) {
  // assumes source data in sheet named Needed
  // target sheet of move to named Acquired
  // test column with checkbox is col 1 or A
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Needed" && r.getColumn() == 1 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Acquired");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 2, 1, numColumns).copyTo(target);
  }
}

Надеюсь, кто-нибудь может помочь.Заранее спасибо!

Ответы [ 2 ]

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

Пожалуйста, попробуйте это и дайте мне знать, как вы идете.:)

function onEdit(event) {
//assumes source data in sheet named Needed
//target sheet of move to named Acquired
//test column with checkbox is col 1 or A
var spreadsheet = event.source;
var sheet = spreadsheet .getActiveSheet();
var range = spreadsheet.getActiveRange();
var sheetName = sheet.getName();
var col = range.getColumn();
var value = range.getValue();

if (sheetName === "Needed" && col === 1 && value === true) {
var row = range.getRow();
var numColumns = sheet.getLastColumn();
var targetSheet = spreadsheet.getSheetByName("Acquired");
var lastRow = targetSheet.getLastRow();
var target = targetSheet.getRange(lastRow + 1, 1, 1, numColumns - 1);
//added number of rows and columns to select a range instead of a single cell
var values = sheet.getRange(row, 2, 1, numColumns - 1).getValues();

values[0][7] = values [0][1];
//access value of row 1, column 8 and set to value of row 1, column 2
//the values are captured in an array and are zero-based. The first column is column 0 for example.

values[0][11] = new Date();
//access value of row 1, column 12 and set to date-time value of 'now'.

target.setValues(values);
}
}
0 голосов
/ 18 декабря 2018

Попробуйте этот код, пожалуйста:

function onEdit(event) {
  // assumes source data in sheet named Needed
  // target sheet of move to named Acquired
  // test column with checkbox is col 1 or A
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Needed" && r.getColumn() == 1 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn() - 1;
    var data = s.getRange(row, 2, 1, numColumns).getValues();
    data[0][8] = 'London';
    data[0][12] = new Date();
    var targetSheet = ss.getSheetByName("Acquired");
    targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns).setValues(data);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...