Чтобы раскрыть на уровне поверхности детали моего вопроса; У меня есть одна вкладка листа 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);
}
}