Google 脚本 - 根据日期从表格中删除信息



我有一个表格文档,其中包含一个主表格,可以从Google表单获取其信息。 我目前有一个脚本可以在每月的 1 号复制主表,然后将该表命名为前一个月。

然后,我想做的是让新工作表删除上个月之前的所有数据。 例如,在 11 月 1 日,脚本将运行,它将复制母版幻灯片并将工作表命名为 Oct-18。 然后,我希望它删除 10 月之前的所有数据,以便它纯粹是 10 月的数据表。

我的工作表上的A列是表单输入的时间戳,其中包含日期和时间。

我当前用于复制和重命名工作表的脚本如下,我尝试添加的第二部分是倒数 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);
}
}
}

希望这是有道理的。

提前谢谢。

在我们的一位计算机科学学生的帮助下设法修复了它!

如果这可以帮助其他人,请参阅下文。

//Delete Old Data
var sheet = ss.getSheetByName(date);
var datarange = sheet.getRange(1,1,sheet.getLastRow());
var values = datarange.getValues();
var currentDate = new Date();
var onemonthago = new Date();
onemonthago.setDate(currentDate.getDate() - 32);
for (i=sheet.getLastRow();i>=2;i--) {
var tempdate = values[i-1];
if(new Date(tempdate) < onemonthago)  
{
sheet.deleteRow(i);

最新更新