Как скопировать данные из одной строки в листе Google на другую вкладку на том же листе? - PullRequest
0 голосов
/ 20 февраля 2020

Чтобы раскрыть на уровне поверхности детали моего вопроса; У меня есть одна вкладка листа Google, которая автоматически обновляется с данными каждый понедельник. Что мне нужно сделать, это скопировать эту строку со своей вкладки в Google Sheet на другую вкладку в том же самом листе с архивацией. Эта скопированная строка должна быть размещена на одну позицию ниже предыдущей (неделя 1 будет строкой 1, неделя 2 - строкой 2 и т. Д. c).

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

Я совершенно новичок в использовании Google Script и не имею никакого знания на каком-либо языке, поэтому помощь по этому вопросу была бы удивительной! Или если кто-нибудь знает способ выполнения этой функции без использования скрипта, это было бы еще лучше! (Я рассмотрел использование = today () и использование дат, которые я искал бы в качестве триггеров, но, конечно, это приводит к ошибке, поскольку текст ячейки равен «= today ()», а не фактической дате ...)

function onEdit(event) {
  // assumes source data in sheet named main
  // target sheet of move to named Completed
  // getColumn with check-boxes is currently set to colu 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "main" && r.getColumn() == 4 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  } else if(s.getName() == "Completed" && r.getColumn() == 4 && r.getValue() == false) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("main");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...