Это должно работать, если пользователи имеют доступ к электронной таблице Edit и если скрипт связан с электронной таблицей:
function onOpen(e) {
var now = new Date();
var ss = e.source;
var sheet = ss.getSheetByName("Sheet1");
var firstRow = 2;
var firstCol = 1;
var numRows = sheet.getLastRow() - firstRow + 1;
var numCols = sheet.getLastColumn();
var values = sheet.getRange(firstRow, firstCol, numRows, numCols).getValues();
var daysToMilliseconds = 1000 * 3600 * 24;
for (var i = numRows - 1; i >= 0; i--) {
var cellTime = new Date(values[i][2]).getTime();
var nowTime = now.getTime();
if ((nowTime - cellTime) / daysToMilliseconds > 30) {
sheet.deleteRow(i + firstRow);
}
}
}
Если речь идет об автономном скрипте, о котором мы говорим, вам следует установить onOpen
триггер, вручную или программно. Например, если это было программно, вы могли бы установить триггер, запустив эту функцию:
function createOnOpenTrigger() {
var ss = SpreadsheetApp.openById("your-spreadsheet-id");
ScriptApp.newTrigger("deleteOnOpen")
.forSpreadsheet(ss)
.onOpen()
.create();
}
И затем вам пришлось бы переименовать вашу функцию в deleteOnOpen
.
Ссылка:
Надеюсь, это поможет.