2016-12-12 3 views
0

Я пытаюсь переименовать недавно созданный лист со вчерашней датой, а в некоторых случаях - с датой 14 дней назад. Вот что у меня есть до сих пор.дата установки как имя листа в таблице

Я нашел этот фрагмент здесь на Stackoverflow и немного изменил его в соответствии с моей целью. Однако это приводит к тому, что лист будет называться с сегодняшней датой.

// previous lines have been left out 
// set sheet name to yesterday's date 

var eet = ss.getSpreadsheetTimeZone(); 
var sheets = ss.getSheets(); 
var date = Utilities.formatDate(new Date(), eet, 'yyyy-MM-dd'); 
//this returns today's date (need yesterday's date, or date from 14 days ago) 

sheets[1].setName(date); // Rename second sheet 

Я надеюсь, что вы, ребята, можете помочь

ответ

0

Попробуйте это за вчерашний день. Вычитается 1 за текущую дату

var testDate = new Date(); 
var secondDate = new Date(); 
secondDate.setDate(testDate.getDate()-1); 
var dateString = Utilities.formatDate(secondDate, eet, 'yyyy-MM-dd'); 

Обратите внимание, что я не проверял вашу установку строки даты. Я переименовал переменную, чтобы избежать зарезервированной «даты», но это может быть необязательно.

+0

Благодаря Карл! скопировал это в мой код и изменил код вокруг этого, и теперь он работает отлично. –

0

Вот имена листов перед исполнением.

enter image description here

Вот имена листов после выполнения.

enter image description here

Вот код:

function changeSheetNamesWithDates() { 

    var ss = SpreadsheetApp.openById("ENTER_SPREADSHEET_NAME"); 
    var sheets = ss.getSheets(); 

    var count = 0; 
    for (var row in sheets) { 

     var startDate = new Date(); 
      startDate.setDate(startDate.getDate() - count); 
     var dateString = Utilities.formatDate(startDate, "GMT", "yyyy-MM-dd"); 

      sheets[row].setName("Sheet " + dateString); 
      count++; 
    } 
} 

Если вы хотите чисто датирует только потом удалить слово "лист" из .setName:

sheets[row].setName(dateString); 
Смежные вопросы