날짜 및 우선 순위가 첨부 된 작업 항목이있는 스프레드 시트가 있습니다. 아이템이 우선 순위 2이고 나이가 1 주 이상인 경우 행을 보관하는 함수를 만들고 싶습니다.Apps 스크립트를 사용하여 날짜가 포함 된 Google 스프레드 시트에 보관
이 스크립트는 제 스크립트이지만, 잘못된 우선 순위로 이동하거나 때로는 잘못된 날짜로 이동하는 경우가 있습니다. 최악의 경우, "Action Items"시트 하단에 빈 행을 추가하고 "Archive"시트에도 빈 행을 만듭니다.
분명히 뭔가 잘못되었지만 강렬한 디버깅을 한 후에도 실제로 나타나지 않습니다. 어떤 도움이 깨우쳐지고 감사하게 될 것입니다!
function Archiver() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Action Items'); // get the sheet
var targetsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Archive'); // get the target sheet
var columnF = sheet.getRange(2, 6, sheet.getLastRow()-1, 1); // get all the rows with dates
var fValues = columnF.getValues(); // get the values of dates
var columnE = sheet.getRange(2, 5, sheet.getLastRow()-1, 1); // get all the rows with priorities
var eValues = columnE.getValues(); // get the values of priorities
var day = 24*3600*1000 // calculate ms in a day
var today = parseInt((new Date().setHours(0,0,0,0))/day); // get date today
for (var i = 0; i < fValues.length; i++) { // repeat loop
var priority = eValues[i][0]; // set priority in loop
var dataday = parseInt(fValues[i][0].getTime()/day); // convert date column into miliseconds
Logger.log(dataday+" <= " + today-7 + " - " + priority) // my log isn't picking up day
if (dataday <= today-7 && priority == "P2") { // if an item is more than 7 days old and Priority 2...
targetsheet.insertRows(2,1)
// move the entire source row to the second row of target sheet
var rangeToMove = sheet.getRange(/*startRow*/ i + 2, /*startColumn*/ 1, /*numRows*/ 1, /*numColumns*/ sheet.getMaxColumns());
rangeToMove.moveTo(targetsheet.getRange("A2"));
// add date and time of when approved to target row in column E
targetsheet.getRange("M2").setValue(Date());
// delete row from source sheet
sheet.deleteRows(i + 2,1);
}
}
ss.toast("Move along.", "Archiving Complete.");
}
작동합니다. 행을 삭제하는 루프를 만들었지 만 날짜를 구문 분석하는 방식에는 아무런 변화가 없습니다. 디버깅 할 때 날짜가 표시되지 않는 이유가 궁금하지만 코드에 나타났습니다. 여전히 혼란 스럽지만, 귀하의 도움에 매우 감사드립니다! – user1786546
죄송합니다. 충분히 명확하지 않았습니다. 즉, 아카이브 된 행을 삭제하면 실제 비교 및 이동이 발생하는 메인 루프 외부에 있어야합니다. 행을 삭제하면 아직 시트에서 처리 된 데이터의 행 번호가 변경되지만 함수의 시작 부분에서 읽은 값에는 변경되지 않기 때문입니다. 오늘 밤 7 시부 터 Logger.log 호출을 추가하여 NaN 오류를 유발하는 숫자가 포함 된 문자열을 혼합하지 않도록했습니다. – jad
오, 알았어! 선명도를 가져 주셔서 너무 고맙습니다. – user1786546