2012-12-31 1 views
2

기본적으로 YYYY-MM-DD 형식을 일반 텍스트로 만들면 새 스프레드 시트의 셀에 삽입하고 싶습니다. 문제는 삽입 된 값이 새 시트에 삽입 될 때 백그라운드에서 실행중인 다른 프로그램에서 읽을 수없는 DD/MM/YYYY로 나타납니다. , + 'DD'다음 일반 텍스트로 삽입 '- -'+ 'MM'+ ''Apps 스크립트를 사용하여 YYYY-MM-DD 일반 텍스트를 Google 스프레드 시트에 삽입하는 방법

function dateTest() 
{ 
var template = SpreadsheetApp.openById('ABC------1234') 
var test = template.getSheetByName('TEST'); 
var database = SpreadsheetApp.getActive().getSheetByName('DASHBOARD'); 

//start & endDates are in YYYY-MM-DD format in these cells 
var startDate = database.getRange('A10').getValue(); 
var endDate = database.getRange('A11').getValue(); 

//The results come up as DD/MM/YYYY when they are set into TEST 
//Formatted to YYYY-MM-DD has already been done 
test.getRange('D1').setValue(startDate); 
test.getRange('D2').setValue(endDate); 

} 

필요한 경우, 날짜가 YYYY +로 분할 될 수있다 :

여기에 다음과 같은 코드 그러나 나는이 묘기를 수행하는 방법을 알지 못한다. 어떤 조언도 대단히 감사하겠습니다.

+0

언급 한 "다른 프로그램"은 무엇입니까? 그것도 가스 야? –

+0

아니, 다행스럽게도이 질문이 GAS 인 경우 답변을 찾았습니다. 하지만 물어봐 줘서 고마워! @Serge – Julz

답변

4

이 정리 될 수 있지만, 여기에 기본입니다.

//start & endDates are in YYYY-MM-DD format in these cells 
var startDate = database.getRange('A10').getValue(); 
var strStartDate = startDate.getFullYear() + "-" + (startDate.getMonth() + 1) + "-" + startDate.getDate(); 
var endDate = database.getRange('A11').getValue(); 
var strEndDate = endDate.getFullYear() + "-" + (endDate.getMonth() + 1) + "-" + endDate.getDate(); 

//The results come up as DD/MM/YYYY when they are set into TEST 
//Formatted to YYYY-MM-DD has already been done 
test.getRange('D1').setNumberFormat('@[email protected]'); 
test.getRange('D1').setValue(strStartDate); 

test.getRange('D2').setNumberFormat('@[email protected]'); 
test.getRange('D2').setValue(strEndDate); 
+0

한 자리 숫자로 된 월 또는 일이 포함 된 날짜 문자열의 형식이 잘못되었습니다.이 게시물에서 다른 해결책을 시도하거나 다음을 시도하십시오. to.setValue (date.getFullYear() + "-"+ (date.getMonth() + 1 + 100) .toString(). slice (1,2) + "-"+ (date.getDate() + 100) .toString(). slice (1,2)); – ScampMichael

+0

매력처럼 작동했습니다! 나는 당신이 특별히 포맷을 설정하지 않아도된다고 가정하고 있습니다. 고마워요 @ScampMichael! – Julz

0

이 해결 방법을 시도해보십시오. 시트에서 수동으로 조작에 관여하지 않는 "일반 텍스트"로 셀 형식을 설정하십시오. 이 셀을 J1이라고 부르 자. 이제 전에 전화 :

test.getRange('D1').setValue(startDate); 
test.getRange('D2').setValue(endDate); 

처럼 뭔가를 수행

test.getRange('J1').copyFormatToRange(test,3,3,0,1); // This is D1 and D2 
test.getRange('D1').setValue(startDate); 
test.getRange('D2').setValue(endDate); 

이것은 당신이 대상 셀에 일반 텍스트 형식을 보자한다.

+0

형식이 YYYY-MM-DD로 설정되어 있어도 DD/MM/YYYY가 반환되었습니다. A10과 A11에 문제가 있다고 가정합니다. 그 이유는 A10과 A11이 일주일에 해당하는 날짜 데이터베이스에서 읽혀지기 때문입니다. @Marcello 원형 테스트를 시도했지만 여전히 기쁨이 없습니다. – Julz

0

이 날짜를 포맷하고 문자열로 설정합니다 :

var tz = ss.getSpreadsheetTimeZone(); 
    var newDate = Utilities.formatDate(startDate, tz, 'yyyy-MM-dd'); // Requested format 
    s.getRange('D1').setValue("'" + newDate); // Set as string 
+0

오류 메시지가 나타납니다 :'TypeError : 함수를 찾을 수 없습니다 getSpreadsheetTimeZone' 내가 잘못하고있는 것이 있습니까? @BryanP – Julz

+0

'ss'는 내 코드에서 날짜를 읽는 활성 스프레드 시트이므로 위쪽에'var ss = SpreadsheetApp.getActive();'를 추가하면됩니다. –

3

Google 스프레드 시트에서 주요 아포스트로피는 서식을 무시한다는 의미입니다. 따라서,이 작품 : 또는

range.setValue("'2007-09-12"); 

, 텍스트를 인용하고는 "공식"으로 설정할 수 있습니다

range.setFormula('"2007-09-12"'); 

(문자열은 큰 따옴표 단일하지 따옴표가 포함되어 있는지 확인 - 애플리케이션 스크립트는 자바 스크립트입니다 따라서 어느 쪽도 지원하지만 스프레드 시트 공식은 작은 따옴표를 같은 방식으로 이해하지 못합니다.)

+0

좋은 정보! 감사! – Julz

관련 문제