У меня есть документ Sheets, в котором есть главный лист, который получает информацию из формы Google.В настоящее время у меня есть сценарий для дублирования мастер-листа 1-го числа каждого месяца, а затем назовите этот лист как предыдущий месяц.
Что я хочу сделать, так это получить новый лист, чтобы удалить все данные до этогопрошлый месяц.Например, 1 ноября сценарий запустится, он продублирует мастер-слайд и назовет лист «Октябрь-18».Затем я хочу, чтобы он удалил все данные за период до октября, чтобы он представлял собой чисто лист данных за октябрь.
Столбец А на моем листе - это метка времени, введенная формами, в нем есть дата и время.
Мой текущий сценарий для дублирования и переименования листа приведен ниже, вторая часть, которую я попытался добавить, - это часть для обратного отсчета 32 дней и удаления всего, что было до этого дня.что имя листа изменяется в зависимости от первой части скрипта, поэтому я не знаю, как заставить скрипт найти недавно созданный лист с переменным именем, а затем удалить из него старые данные.Там, где он называется «Лист», мне нужно, чтобы он был назван как лист, который мы только что создали.(Я бы отсчитал 32 дня, чтобы охватить все месяцы, это не идеальное решение, поскольку в конечном итоге оно немного искажает данные, но в основном мне нужно решить, как подобрать переменные данные).
Единственный другой способ, которым я могу думать, это получить дату вчерашнего дня и попытаться заставить ее выбрать месяц, затем выполнить поиск между 1-го числа этого месяца и датой вчерашнего дня и удалить все, что находится за пределами этого диапазона.
// Duplicate & Rename
function Duplicate() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var ss = SpreadsheetApp.getActiveSpreadsheet();
var tz = ss.getSpreadsheetTimeZone();
var now = new Date();
var yesterday = new Date();
yesterday.setDate(now.getDate()-1);
var date = Utilities.formatDate(yesterday, tz, 'MMM-YY');
ss.getSheetByName('Log')
.copyTo(ss)
.setName(date)
.getRange(1,1000)
.getValue()
}
// Delete Old Data
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var datarange = sheet.getRange(1,1000);
var values = datarange.getValues();
var currentDate = new Date();
var onemonthago = new Date();
onemonthago.setDate(currentDate.getDate() - 32);
for (i=lastrow;i>=2;i--) {
var tempdate = values[i-1][2];
if(tempdate < onemonthago)
{
sheet.deleteRow(i);
}
}
}
Надеюсь, это имеет смысл.
Заранее спасибо.