Google 스프레드 시트에서 맞춤 함수를 정의하고 싶습니다. 이 함수는 매우 간단한 작업을 수행해야하지만 수행 방법을 찾지 못했습니다. Google 스크립트에서 날짜를 처리하는 데 대한 명확한 참조를 찾을 수 없기 때문에 내가 읽은 모든 답변과 매우 혼란 스럽습니다.
내가 이해 한 바에 따르면 기본 날짜 조작은 다음과 같이 수행 할 수 있습니다.
-
new Date()
: 내가 이해 한 바에 따르면 일부 속성이있는 개체를 정의합니다. 셀의 날짜를 사용하고 변환하는 방법을 모릅니다. 이러한 개체로. -
Utilities.formatDate()
: 문자열 으로 표시되는 날짜 형식을 변경합니다. - 라이브러리
Moment
( http://momentjs.com/ )
결국 두 날짜 (예 : 31/01/2016
)를 입력하고 두 날짜 사이의 최대 값을 찾고 첫 번째 달을 추출하려면 어떻게해야합니까? 하나?
function myfun(date1,date2) { // month = month of date 1 // return maximum(date1,date2); }
누군가 날짜를 다루는 개요를 설명하거나 좋은 참조를 나타낼 수 있는지도 관심이 있습니다.
댓글
- answer by Sergei insas 에서 올바른 시간 값을 읽는 방법 Google 스프레드 시트
- 감사합니다. 다른 방법은 없나요? 예를 들어 날짜의 달과 같이 추출하는 것은 ' 매우 복잡해 보입니다! 또한 시간대를 고려해야합니다. ' 간단한 (고정 된) 날짜 작업을 위해 약간 뒤틀린 것입니다.
- 초점을 맞춘 답변을 추가했습니다. 노출 된 사건의 코드이지만 문제는 두 가지 광범위하다 (날짜 조작). JavaScript 코드 스 니펫과 온라인 코스를 찾아 보는 것부터 시작해야 할 것 같습니다.
- @Rub é n 이해합니다. " 나에게 코드 작성 " 질문을하고 싶지 않았기 때문에 실제로 찾지 못한 일반적인 정보를 찾고있었습니다. Sergei insas '의 게시물이 도움이됩니다.
- JavaScript에 대한 일반 정보는 developer.mozilla를 참조하세요. org / en-US / docs / Web / JavaScript 및 Google Apps Script에 대해서는 developers.google.com/apps-script 를 참조하세요.
답변
날짜 시간 값 가져 오기 및 설정
스크립트가 날짜, 날짜-시간 또는 기간 형식의 셀에서 JavaScript Date 개체 를 가져옵니다. 그런 다음 해당 월의 getMonth()
를 포함하여 해당 MDN 페이지에 나열된 다양한 방법을이 개체에 적용 할 수 있습니다. 예 :
var sheet = SpreadsheetApp.getActiveSheet(); var value = sheet.getRange("A1").getValue(); // is a Date object Logger.log([value.getMonth(), value.getHours(), value.getUTCHours()]); // examples of available methods
반대로 setValue
를 사용하여 날짜 개체를 셀에 할당 할 수 있습니다. 자동으로 포맷됩니다.
sheet.getRange("B2").setValue(new Date()); // current timestamp
시간대
Google 스프레드 시트의 타임 스탬프는 파일> 스프레드 시트 설정을 통해 설정되는 현지 시간대입니다. 스크립트는 또한 다를 수 있으며 시간대 내에서 작동하며 스크립트 편집기의 파일> 프로젝트 속성 아래에 있습니다. 이러한 시간대가 일치하지 않으면 타임 스탬프에 문제가있는 것입니다.
시간대가 일치하는지 확인하려면 두 가지를 수동으로 비교하거나 다음과 같은 작업을 수행 할 수 있습니다.
var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A1").setFormula("=date(2015,1,1)"); Logger.log(sheet.getRange("A1").getValue().getHours());
이것은 공식을 입력합니다. A1 셀의 =date(2015,1,1)
결과는 스프레드 시트의 시간대에서 2015-01-01 00:00:00이됩니다. 그런 다음 스크립트는 날짜를 가져와 스크립트의 현지 시간으로 시간을 추출합니다. 시간대가 일치하면 로그.
댓글
- 감사합니다. 저를 위해 일합니다. 추가 질문 : 범위 (2, 1, 30, 20) .getValues;-어떻게 달성 할 수 있습니까?
답변
짧은 답변
아래 두 개의 맞춤 함수는 Google 스프레드 시트와 Google Apps Script가 날짜와 함께 작동하는 방식의 예입니다.
예 1 : 최신 날짜 가져 오기
function myFunction(date1,date2) { return new Date(Math.max(date1,date2)) }
예 2 : 최신 날짜의 달 가져 오기
function myFunction2(date1,date2) { var date = new Date(Math.max(date1,date2)); return date.getMonth(); }
간단한 설명
첫 번째 예에서 Math.max JavaScript 메소드가 작업을 수행합니다.
주문한 경우 날짜를 resu로 가져옵니다. lt, new Date () 를 사용하여 날짜 개체를 만듭니다.
두 번째 예에서는 날짜 개체가 변수에 할당됩니다. , 그런 다음 getMonth () 자바 스크립트 메서드를 사용하여 월 색인을 가져옵니다.JavaScript는 시작 요소로 0
를 사용하므로 0
는 1 월, 1
2 월 등입니다.
참조
댓글
- i)
date1
,date2
가 숫자로 전달됩니까 (일반적으로 54243)? ii) 이제date2.getMonth()
를 사용하여date2
월을 추출하려고했지만 셀이01/12/2015
02/12/2015
에 대해 10과 11을 반환합니다. 시간대 때문에 '라고 생각합니다. 시트 함수month()
는 훨씬 더 간단합니다. - Google 스프레드 시트는 날짜를 자바 스크립트와 동일한 일련 번호로 처리하지만 각각의 시작 날짜는 다릅니다. 따라서 JavaScript 날짜 함수를 사용하려면 먼저 스프레드 시트 날짜를 JavaScript 날짜로 변환해야합니다. 이미 알고 있듯이 더 쉬운 방법은 스프레드 시트 함수를 사용하여 스프레드 시트 날짜를 처리하고 JavaScript 함수를 사용하여 JavaScript 날짜를 처리하는 것입니다.