1

주간 회의의 Google 시트가 있습니다. 나는 현재 열 A를 자동으로 열 B의 상자에 입력 할 때의 날짜로 채 웁니다. 일반적으로 메모를 추가하는 날짜가 아니라 다음 모임의 날짜를 넣기 때문에 내가 추가 할 수있는 스크립트가 있는지 궁금해졌습니다. 그것은 날짜 X를 취하고 다음 회의 날짜로 '반올림'합니다. 회의는 항상 수요일에 있습니다.자바 스크립트 : 다음 주간 회의의 날짜에 자동 시간 기록을 자동으로 변경하려고합니다.

나는이 일을 둘러 보았으나 가장 가까운 분으로 모으는 방법을 찾고 있었지만, 필요한만큼 구체적인 것은 아닙니다.

예를 들어 나의 마지막 회의는 9/27이었습니다. 10/2 또는 10/3에 시트에 입력하더라도 10/4의 타임 스탬프를 표시하기 위해 9/27 이후에 B 열에 입력 할 내용이 필요합니다.

현재 internetgeek.org에서 이것을 실행 :

function onEdit(event) 
{ 
    var timezone = "GMT-5"; 
    var timestamp_format = "MM/dd/yyyy"; 
    var updateColName = "Item"; 
    var timeStampColName = "Date"; 
    var sheet = event.source.getSheetByName('Agenda'); 


    var actRng = event.source.getActiveRange(); 
    var editColumn = actRng.getColumn(); 
    var index = actRng.getRowIndex(); 
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
    var dateCol = headers[0].indexOf(timeStampColName); 
    var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1; 
    if (dateCol > -1 && index > 1 && editColumn == updateCol) { 
    var cell = sheet.getRange(index, dateCol + 1); 
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format); 
    cell.setValue(date); 
    } 
} 

답변

0

을만큼 당신이 수요일의 날짜의 요일 번호에 의한 형식 오늘 날짜에 할 각 날짜로, today() 옆에서 차이를 찾을 수 업데이트 추가 일 :

function onEdit(event) 
{ 
    ... 
    var today = new Date(); 

    // Today as day of week by number - 1 Monday...0 Sunday 
    var day_of_week = today.getDay(); 

    // Find the diff in days until next Wednesday 
    var diff = day_of_week > 3 ? 10 - day_of_week : 3 - day_of_week; 

    // Add `diff` amount of days to today 
    today.setDate(today.getDate() + diff); 
    ... 

    cell.setValue(today); 
} 

편집 3 - wednesday

날짜부터 - Add days to JavaScript Date까지 윤년과 DST 날짜/시간이 모두있는 today.setDate(today.getDate() + diff);을 테스트했습니다. 이 특별한 사용을위한 가장 우아한 작업 솔루션 인 것 같습니다.

+0

'새로운 날짜 (today.getTime() + diff * 3600000 * 24)'는 일광 절약 시간이있는 모든 날이 24 시간이 아니기 때문에 날짜를 추가하는 좋은 방법이 아닙니다. [* JavaScript 날짜에 일 추가 *] (https://stackoverflow.com/questions/563406/add-days-to-javascript-date)를 참조하십시오. – RobG

+0

@RobG 좋은 지적; 나는 DST를 완전히 간과했다. 해당 링크의 솔루션을 기반으로 업데이트되었습니다. 감사! –