簡體   English   中英

根據日期刪除單元格,但保留格式

[英]Delete cells based on date but leave formatting

我從詢問的“基於日期刪除單元格”問題中獲得了此腳本。 它刪除實際行,從而刪除所有格式和變量。 有沒有辦法讓它只是刪除值?

根據日期刪除單元格

這是代碼:

function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Field1");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array

var currentDate = new Date();
var oneweekago = new Date();
oneweekago.setDate(currentDate.getDate() - 1);

for (i=lastrow;i>=2;i--) {
var tempdate = values[i-1][0];// arrays are 0 indexed so row1 = values[0] 
and col3 = [2]

 if(tempdate < oneweekago)  
{
  sheet.deleteRow(i);
}
}
}

您正在尋找的是.clearContent()而不是deleteRow。 這只會清除單元格的內容,而所有格式保持不變。 這是“ 類范圍”文檔 ,在查看您可以對工作表中的特定范圍進行處理時,它非常有用。

現在,要使它按您希望的方式工作,您將必須對語句使用2,一個用於獲取行號(i),另一個用於獲取列號(j),然后可以在列中使用它。 .getRange來運行.clearContent()。

function clearOldRecords() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Field1");
  var dataRange = sheet.getDataRange();
  var lastRow = dataRange.getLastRow();
  var data = dataRange.getValues();

  var currentDate = new Date();
  var oneWeekAgo = new Date();
  oneWeekAgo.setDate(currentDate.getDate() - 7);

  for (var i = 0; i < data.length; i++) {
    for (var j = 0; j < data[i].length; j++) {
    var tempDate= data[i][0]; //column number is indexed from 0, change accordingly to your data

      //if start date column is older than 7 days, clear the content of the row
      if (tempDate!= "" && tempDate < oneWeekAgo) {
        sheet.getRange(i+1,j+1).clearContent();
      }
    }
  }
}

因此,為了進一步解釋這一點,這些是我對腳本進行的顯着更改。

日期減法以天為單位計算,因此執行-1只會比日期少1天。 您需要一個星期,所以我將其更改為-7:

oneWeekAgo.setDate(currentDate.getDate() - 7);

該腳本也不再掃描工作表的最后一行,如果工作表很大,這可能會影響性能,但是在正常的日常工作表上,這不應該成為問題。

如您在下面看到的,for循環for i獲取所有行號,並且for循環j可用於列號,正如您在嘗試清除內容時在getRange()中看到的那樣:

sheet.getRange(i+1,j+1).clearContent();

注意:如果未按日期排序,這可能會在數據中留下很大的空白,您可以添加類似以下內容以對其進行排序(將其放在FOR循環之外):

sheet.getRange('A1:Z').sort({column: 2, ascending: false}) //change column number accordingly, this is NOT indexed from 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM