>source

안녕하세요, "A"열의 값이 30 일보다 오래되었고 잘 작동하는 경우이 코드를 사용하여 행을 삭제하고 있습니다. 내가 찾고있는 것은 열 "B"에서 값을 가져 와서 행을 삭제하기 전에 이름이 일치하는 시트를 삭제할 수도 있다는 것입니다.

감사

function deleteOldRow() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Submited List");
  var datarange = sheet.getDataRange();
  var lastrow = datarange.getLastRow();
  var values = datarange.getValues();
  var currentDate = new Date();//today
  var monthOld = Date.now() - 30*24*3600*1000; 
  for (i=lastrow;i>=2;i--) {
var tempDate = values[i-1][0];
values[0] 
if ((tempDate!=NaN) && (tempDate <= (monthOld)))
{
  Logger.log(i)
  sheet.deleteRow(i);
   }
  }
}

  • 답변 # 1

    나는 당신의 목표를 다음과 같이 믿습니다.

    행이 삭제 될 때 "B"열에서 시트 이름을 검색하여 시트를 삭제하려고합니다.

    "B"열의 값이 시트 이름 인 경우 다음 스크립트를 스크립트에 추가하는 것은 어떻습니까?

    수정 된 스크립트 :

    if ((tempDate!=NaN) && (tempDate <= (monthOld))) {
      sheet.deleteRow(i);
      var deleteSheet = ss.getSheetByName(values[i-1][1]); // Added. Or ss.getSheetByName(values[i-1][1].trim());
      if (deleteSheet) ss.deleteSheet(deleteSheet); // Added
    }
    
    

    이 수정에서 시트 이름 시트가 values[i-1][1] 존재하는 경우 시트가 삭제됩니다.

    참고:

    deleteSheet (시트)

관련 자료

  • 이전 mysql - 표에서 가장 큰 값 선택
  • 다음 c99 - 이 C 구문을 어떻게 이해해야합니까?