한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
DFP API v2201211 출시 발표
2012년 11월 30일 금요일
2012.11.29
Adam Rogal
(DFP API Team)
원문참고:
http://googleadsdeveloper.blogspot.com/2012/11/announcing-v201211-of-dfp-api.html
DFP API v201211을 출시했습니다. 이번 버전은 API 강화에 중점을 두어 개발자가 API 문제를 접하게 될 때 더욱 폭넓은 선택을 할 수 있도록 했습니다. 특히 정체 불명의 SERVER_ERROR를 피하고 새로운 기능으로 작업할 수 있는 신규 오브젝트를 상당수 추가하였습니다. 또한 새로운 creative 래퍼 서비스와 기타 소규모 기능들을 출시하였습니다. 해당 내용은 모두
릴리즈 노트
에서 확인하실 수 있습니다.
에러 핸들링 개선
오늘부로 API에 추가된 두 가지 새로운 기능은 호출이 계획대로 실행되지 않을 때 예외를 처리하는 법을 더욱 용이하게 합니다. 첫 번째는
UnsupportedCreative
타입입니다. 일전에 이전 버전 API를 사용하여 새로운 creative를 가져오려고 했다면 “프로세싱 중에 오류 발생” 이라는 SERVER_ERROR, 또는 502 HTTP 오류 상태 코드를 받았을 것입니다. 이제 API가 해당 버전에서 정의되지 않은 creative를 가져오고 있는 것을 감지하면, UnsupportedCreative로 creative를 반화할 것입니다. 반환된 creative는
베이스 타입
의 모든 필드와
지원되지 않는 creative 타입
이 무엇이었는지 알려주게 됩니다.
두 번째 개선점은, 현존하는 모든
ApiError
타입에 새로운 enum
UNKNOWN
을 추가했습니다. UNKNOWN으로 ApiError를 받으면 해당 예외를 별도로 기록할 수 있게 됩니다 (try/catch 블락에서 에러를 검토). 그리고 해당 에러 내용을 포럼에
알려주시면
문제 발생의 원인을 찾아갈 수 있도록 도움을 드리겠습니다. 추후에 UNKNOWN을 더욱 많은 enum에 추가하여 API 버전이 실제 enum 값을 나타내지 못하면 심각한 장애 없이 오브젝트를 가능한 진행할 수 있도록 할 것입니다.
참고
: UnsupportedCreative와 UNKNOWN enum 선택은 모든 API 버전에 추가되었습니다. 따라서 모든 버전과 서비스를 위한 WSDL이 변경되었습니다. 실패한 API 호출은 아마 아무 정보도 주지 않을 것입니다. 다만 새로운 변경사항들은 기존 버전에서 해당 변경 사항의 혜택을 받기 위하여 클라이언트 코드를 재생시키거나 클라이언트 라이브러리의 새로운 버전을 다운로드 할 수 있는 선택 사항을 제공하게 됩니다. v201211 이전 버전에서는 지원되지 않는 creative는 반환되는 대신에 필터링될 것입니다.
Deprecation 공지
지난
10월
에 말씀 드렸듯,
v201108
,
v201111
,
v201201
는
더 이상 사용되지 않고 12월 10일에 중단될 예정입니다. 새 버전으로 업그레이드 하지 않으신 분은 이 기회에 업그레이드 하시길 바랍니다. 기타 구체적인 질문이 있으시면
포럼
에 문의하시면 도와 드리겠습니다.
DFP 구글 개발자 라이브(GDL) 세션 예정
12월 5일에
GDL 세션
을 개최하여 몇몇 DFP API 개발자들을 인터뷰하고 다른 개발자들을 위한 팁을 들어보는 시간을 가지려고 합니다..
Ads Developer Google+ page
에 팔로잉 하세요. 조만간 훌륭한 팁을 소개할 예정입니다. 여러분의 요청 사항도 환영합니다.
Apps Script에서 오픈 소스 라이브러리 사용하기
2012년 11월 30일 금요일
원문참고:
http://googleappsdeveloper.blogspot.kr/2012/11/using-open-source-libraries-in-apps.html
2012.11.27
Eric Koleda (
Developer Programs Engineer)
클라이언트 사이드 웹 개발을 위해서는 JavaScript를 사용하는 것이 오랫동안 기정사실화 되어왔습니다. 하지만 최근 JavaScript는 서버 사이드에도 인기를 끌고 있습니다. 이러한 개념을 유행시키는 데는 Apps Script 뿐만 아니라,
Mozilla's Rhino
와
Node.js
등과 같은 프로젝트 등도 큰 역할을 했습니다. 그 결과 개발자들은 수많은 새로운 오픈소스 JavaScript 라이브러리를 만들었습니다. 이번 기회에 Apps Script 프로젝트에 오픈 소스 라이브러리를 어떻게 사용하는지에 대해서 말씀드리고자 합니다.
Underscore
제 스크립트에 사용하고자 했던 라이브러리는 JavaScript를 위한 자칭 유틸리티 벨트 라이브러리인 “
Underscore
”입니다. Underscore에서는 JavaScript 내의 코딩을 깔끔하고 재미있게 만드는 수많은 헬퍼 함수를 제공합니다. 예를 들어 범위 내에서 각 값을 기록하는 예를 살펴보겠습니다.
// Using plain JavaScript.
for
(
var
i
=
0
;
i
<
values
.
length
;
i
++)
{
for
(
var
j
=
0
;
j
<
values
[
i
].
length
;
j
++)
{
Logger
.
log
(
values
[
i
][
j
]);
}
}
위와 같이 for 루프를 작성하는 것이 일반적인 방법이지만, 상당량 타이핑을 해야하고 큰 의미 없는 카운터 변수들을 기억해야 합니다. Underscore는
each()
메소드를 제공하여 해당 프로세스를 훨씬 용이하게 만들어 줍니다.
// Using Underscore.
_
.
each
(
values
,
function
(
row
)
{
_
.
each
(
row
,
function
(
cell
)
{
Logger
.
log
(
cell
);
});
});
익명의 함수를 파라미터로 넘겨주는 것에 다소 익숙해 질 필요가 있지만,
jQuery
개발 경험이 있으시다면 이러한 패턴에 익숙하실 것입니다.
Underscore는 상당한 확장성도 제공합니다.
Underscore.string
는 유용한 문자열 조작 기능을 가지고 있습니다. 제가 애용하는 기능은 JavaScript에서
sprintf()
기호를 사용하는 것입니다. 복잡한 문자열을 만드는 과정을 간소화시켜 줍니다
// Using plain JavaScript.
var
message
=
"Hello, "
+
firstName
+
" "
+
lastName
+
". Your wait time is "
+
wait
+
" minutes."
;
// Using Underscore.string.
var
message
=
_
.
sprintf
(
"Hello, %s %s. Your wait time is %d minutes."
,
firstName
,
lastName
,
wait
);
Apps Script와 연동
프로젝트 안에 Underscore 라이브러리를 포함시키는 가장 간단한 방법은 소스 코드를 바로 스크립트에 붙이는 것입니다. 하지만 여러 프로젝트에서 사용하게 된다면 상당한 중복 작업이 되겠죠. 이번 해 초, Apps Script에서
libraries
라는 기능을 발표했습니다. 스크립트를 공유하고 다른 프로젝트에 포함시킬 수 있는 기능입니다. Underscore와 같은 JavaScript 라이브러리를 Apps Script 라이브러리로 패키징하는 것이 가능합니다. 하지만 제대로 동작하기 위해서는 헬퍼 함수가 필요합니다.
Underscore가 로딩되면 엑세스하기 위해 사용되는 "_" 라는 전역 변수를 생성합니다. Apps Script는 라이브러리의 전역 범위가 라이브러리를 포함하는 스크립트의 전역 범위와 충돌되는 것을 방지합니다. 그래서 라이브러리에 헬퍼 함수를 만들어 그 변수를 전달할 수 있도록 했습니다.
// In the library.
function
load
()
{
return
_
;
}
라이브러리를 포함하는 제 스크립트에서, 간단하게 해당 함수를 호출하고 "_" 변수에 결과 값을 세팅하도록 하였습니다.
// In the script that includes the library.
var
_
=
Underscore
.
load
();
Underscore 라이브러리 복사본을 원하시면, 프로젝트키 “MGwgKN2Th03tJ5OdmlzB8KPxhMjh3Sh48” 값과 상단의 코드 예제를 사용하세요. 소스 코드 전체를 확인하시려면
클릭하세요
.
HtmlService로 사용하기
위의 코드를 사용하여 쉽게 서버 사이드 Apps Script 코드에 해당 라이브러리를 추가할 수 있었습니다. 그리고 이 기능들을 HtmlService에 의해 지원되는 웹 애플리케이션에 클라이언트 사이드로 사용하고 싶기도 했습니다. 이를 위해서 Underscore 소스 코드를 복사하여
<script>
태그에 씌워서 Html 파일(Script 파일 대신)에 저장했습니다. 아래와 같은 헬퍼 함수를 사용하여 이 예제 코드 파일들은 웹 애플리케이션의 HtmlTemplates에 포함되었습니다.
// In the library.
var
FILES
=
[
'Underscore.js'
,
'Underscore.string.js'
,
'Init.js'
];
function
include
(
output
)
{
for
(
var
i
=
0
;
i
<
FILES
.
length
;
i
++)
{
var
file
=
FILES
[
i
];
output
.
append
(
HtmlService
.
createHtmlOutputFromFile
(
file
).
getContent
());
}
}
This function was called in the web app's HtmlTemplate using the simple code below.
<!-- In the web app that includes the library. -->
<html>
<head>
<?
Underscore
.
include
(
output
)
?>
</head>
...
Other libraries 기타 라이브러리
Underscore와 연동은 상당히 용이합니다. 하지만 다른 오픈 소스 라이브러리를 가지고 동일한 접근법을 시도하는 것인 더욱 복잡한 작업일 수도 있습니다. 브라우저나 Node.js 실행시간 안에 특정 성능에 의존하는 경우 Apps Script 환경에서 제대로 동작하지 않는 라이브러리도 있습니다. 게다가 HtmlService에 의해 지원되기 위해서 코드는 Caja 엔진의 엄격한 확인을 통과해야 합니다. 하지만 다수의 인기있는 라이브러리가 기준에 부합하고 있지 않는 것이 현실이죠. 어떠한 경우에는 이러한 문제를 피하기 위해서 라이브러리를 매뉴얼하게 패치할 수 있어야 합니다. 하지만 이를 위해서는 라이브러리 동작에 대한 깊은 이해가 필요로 합니다.
여러분의 작업에 Underscore 및 기타 오픈 소스 라이브러리를 사용하시기를 기대합니다. Apps Script와 훌륭하게 동작하는 라이브러리를 보시면
제 Google+ 계정
에 공유해 주세요. 해당 내용을 알리는데 도움을 드리겠습니다.
구글 개발자 아카데미 (Google Developer Academy)
2012년 11월 29일 목요일
한국 개발자들을 위한
구글 개발자 아카데미
(Google Developer Academy)를 소개합니다.
구글 개발자 아카데미(GDA)는 여러가지 구글 개발자 툴 및 플랫폼을 아우르는 온라인 강좌입니다. (현재까지 Google Ads, Android, Commerce, Cloud, Drive, Maps, TV, YouTube 가 포함) 개발 입문자부터 숙련자까지 커리큘럼 기반 학습으로 기존 기술 문서를 뛰어넘는 다양한 정보를 얻을 수 있습니다.
참고로 GDA는 4개국어로 번역되어 있습니다. (한국어, 중국어, 일본어, 스페인어)
GDA 한글 문서 바로가기:
https://developers.google.com/academy/?hl=ko
GDA에 어떤 내용이 있는지 둘러보세요!
번역에 오류를 발견하시면 페이지 하단에
버그신고
(Report a bug)로 피드백 주세요.
12월 7일까지
유용한 피드백을 보내주신 분들께는 감사의 뜻으로 작은 선물을 보내 드리도록 하겠습니다.
여러분의 피드백을 환영합니다.
"구글 드라이브 워크샵" 개최로 Google Drive 개발자 커뮤니티 지원
2012년 11월 28일 수요일
Nicolas Garnier (구글 드라이브 Developers Advocate)
원문참조:
http://googleappsdeveloper.blogspot.kr/2012/11/supporting-growing-google-drive.html
지난 4월
Google Drive SDK
공개 이후,
Lucidchart
나
HelloFax
등의 기업에서는 강력하면서 세련되고 유용한 구글 드라이브 앱을 개발했습니다. 그리고 더욱 많은 기업에서 매일
흥미로운 연동
을 선보이고 있습니다. 이 기간에 개발자 커뮤니티(특히
Stack Overflow
)가 상당한 성장을 이루었습니다.
확대되고 있는 개발자 커뮤니티 및 구글 드라이브 연동에 대한 관심에 더욱 지원하기 위해, 구글 드라이브 개발자 워크숍 시리즈를 개최하고자 합니다. 첫 행사로,
Shutterfly
,
Fedex
,
Autodesk
,
Twisted Wave
,
1DollarScan
,
Manilla
를 포함한 몇몇 기업을 캘리포니아 마운틴뷰의 구글플렉스에 초대하여 이번주 이틀 일정으로 워크숍을 주최할 것입니다.
해당 행사에서는 구글 엔지니어들이 참가하여 디자인 및 기능 구현, 승인 절차, 안드로이드 연동 등, 구글 드라이브 연동과 관련한 다양한 영역에서 참가자를 지원할 것입니다.
기업들이 보여준 바에 따르면
Google Drive SDK로 하루나 이틀 안에 연동을 할 수 있다고 합니다. 워크샵 참가자들이 이와 비슷한 경험을 누리시기를 바랍랍니다. 워크숍에서 무엇을 배우고 이루었는지에 대해 이번주 말에 확인하세요.
유사 구글 드라이브 워크샵에 참
가하고 싶으시거나, 상품 연동과 관련하여 구글 드라이브 팀에 연락을 원하시면 저희에게
말씀해주세요.
Google Code-in 2012 콘테스트가 시작되었습니다!
2012년 11월 27일 화요일
Stephanie Taylor (오픈소스 프로그램)
Google Code-in 2012
콘테스트가 공식적으로 시작되었습니다. 멋진 상품을 타면서 오픈 소스 소프트웨어 개발에 대해서 알고 싶은 대학 취학 이전 13~17세 학생들은 오늘
프로그램 사이트
에 등록하세요. 학생들은
10개의 오픈 소스 기관
에서 기획된 5개의 카테고리(코딩, 문서화/교육, 품질 보증, 연구/지원활동, 유저인터페이스)에서 과제를 선택할 수 있으며, 해당 기관들이 학생들을 멘토링 해 줄 것입니다. 학생들은 인증서 및 티셔츠를 받을 수 있으며, 최우수상 수여자는 보호자 (혹은 법적 보호자)와 함께 2013년에 캘리포니아 마운틴 뷰의 구글 본사를 방문할 수 있는 여행 기회를 얻게 됩니다. 10개의 각 오픈 소스 기관에서 가장 많은 과제를 완료한 5명의 학생 중 2명을 선정하여 총 20명의 Google Code-in 2012 콘테스트 최우수상 수여자를 선정하게 됩니다. 지난 해보다 두 배가 많은 숫자입니다.
지난 2011년에는 56개국에서 542명의 학생들이 콘테스트에 참가했습니다. 오픈소스 개발의 환상적인 세계를 경험하여 새로운 기술을 배우고 친구도 사귀는 전 세계 학생 중 한 명이 되어 보세요!
등록을 원하시는 분은
프로그램 사이트
에서
콘테스트 규칙
과
자주묻는 질문
(FAQ)을 확인하세요. 기타 질문이 있으시면
토론 리스트
에 등록하실 수도 잇습니다. 콘테스트를 위한 중요한 세부 일정은
캘린더
를 확인하세요. 자격 요구조건에 부합하면 계정을 만들고 바로 과제 선정을 하실 수 있습니다.
Google Education 페이지에서 2012년 11월 26일 오후2시(태평양 시각)에 라이브
Google Code-in 행아웃 온에어
에 참여하실 수도 있습니다. 행아웃 온에어에서는 콘테스트 세부내용에 대해서 다루고 시청자에게 질문을 받게 됩니다. 행아웃 온에어에 참여하실 수 없으신 분을 위해 1~2일 안에
Google Open Source Student Programs YouTube Channel
에 해당 내용 녹화본을 포스팅 해드리겠습니다.
본 콘테스트는 2013년 1월 14일에 종료됩니다. 오늘 과제 선정을 시작하세요. 행운을 빕니다!
원문참조:
Google Open Source Blog
하나, 둘, 셋~ 낙찰! 태블릿에서 사용하는 앱 스크립트
2012년 11월 27일 화요일
Tom Fitzgerald (구글 본사 엔지니어)
가족의 컴퓨터 문제를 해결하느라 골머리를 앓는 분 계신가요? 최근 집안에서 운영하는 사업에 기술 문제가 발생했는데, 악성 소프트웨어를 제거할 필요도 없이 오히려 재미있게 해결할 수 있었던 제 경험을 공유하고자 합니다. 저희 가족은
Rasmus Auctioneers
라는 경매사이트를 운용하고 있습니다. 버지니아주 알렉산드리아에 소재한 글로벌 경매 회사죠. 회사 전반의 업무 프로세스에 Google Apps를 사용하고 있기 때문에 문서, 캘린더 등의 모두 연결되어 있습니다.
저희 사업의 운송 프로세스를 현장에서 태블릿으로 관리하고 있습니다. 급변하는 환경과 제한된 시간으로 인해 신속하고 간편한 솔루션이 필요하죠. 경매가 끝나면 고객은 Google Form을 채우고 Google Spreadsheet으로 운송 및 지불 정보를 저장하게 됩니다. 이 정보는 운반하는 사람에게 처리를 위해 보내지게 되죠. 하지만 운송을 위해서는 모든 정보가 아닌 몇몇 중요한 정보만 있으면 됩니다. 가능한 사람의 개입 없이 처리되어야 하죠.
우리의 해결법은 바로 Apps Script를 작성하는 방법이었습니다. 즉, 새로운 기능이 경매 현장에서 사용되는 태블릿에서 동작하게 만드는 것이죠. 시트가 열리면 아래의 기능이 실행되어 자동적으로 최신 고객을 가장 상위에 올려놓도록 데이터를 정렬하게 됩니다. 간단한 대화상자를 통해서 어떤 데이터가 어떤 특정 경매를 위해 필요한지 결정하여 스크립트는 필요한 데이타를 찾아서 운반자에게 보내주고 캘린더에 알림 이벤트도 추가합니다.
function
sendData
()
{
// Sort the rows
var
sheet
=
SpreadsheetApp
.
getActiveSheet
();
sheet
.
sort
(
4
);
// What row do we want?
var
myValue
=
Browser
.
inputBox
(
"What row?"
);
// Variables
var
emailRecipients
=
"me@mydomain.com"
;
var
emailSubject
=
"Moving data for "
;
var
valueToShow
=
""
;
// Get cell values
var
clientName
=
sheet
.
getRange
(
"B"
+
myValue
).
getValue
();
var
movingDate
=
sheet
.
getRange
(
"D"
+
myValue
).
getValue
();
valueToShow
+=
"Name: "
+
sheet
.
getRange
(
"B"
+
myValue
).
getValue
()
+
"\r\n"
;
valueToShow
+=
"Moving Date: "
+
sheet
.
getRange
(
"D"
+
myValue
).
getValue
()
+
"\r\n"
;
valueToShow
+=
"Size: "
+
sheet
.
getRange
(
"E"
+
myValue
).
getValue
()
+
"\r\n"
;
// Send email
MailApp
.
sendEmail
(
emailRecipients
,
emailSubject
+
clientName
,
valueToShow
);
// Add to calendar
CalendarApp
.
createAllDayEvent
(
"Move today! "
+
clientName
,
new
Date
(
movingDate
));
}
소스코드를 보시면 관련 칼럼에서 데이터를 수집하고 변수에 넣어서 한 줄로 Gmail을 통해서 보낸 방법을 확인 하실 수 있습니다. 캘린더에 알림기능을 추가하는 것도 한 줄이면 됩니다.
여러분을 귀찮게 하는 반복되는 프로세스가 있으세요? 자동으로 처리할 방법을 원하시나요? 제가 우리 가족 사업에 사용했던 해결법인 Apps Script가 해결해줄 수도 있습니다.
원문참고:
http://googleappsdeveloper.blogspot.kr/2012/11/going-going-gone-apps-script-on-tablets.html
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2025
1월
2024
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed