Google Ads 스크립트의 강력한 기능은 Google Ads 스크립트나 서드 파티 API의 컨테이너 및 서비스를 제공합니다
이 가이드에서는 스크립트를 작성하는 데 도움이 되는 다음 개념을 다룹니다. 다른 서비스에 연결:
- HTTP 요청 실행: 사용 방법
액세스하려면
UrlFetchApp
외부 API를 사용하는 것이 좋습니다 - 인증: 여기서는 몇 가지 일반적인 인증 시나리오를 다룹니다.
- 응답 파싱: 반환된 JSON 및 XML 데이터를 처리하는 방법입니다.
또한 다음을 포함합니다. 숫자 샘플 한 눈에 볼 수 있습니다.
UrlFetchApp을 사용하여 데이터 가져오기
UrlFetchApp
는
핵심 기능을 제공합니다.
다음 예는 OpenWeatherMap에 대한 요청 메시지입니다. OpenWeatherMap을 선택한 이유는 비교적 간단한 승인 체계와 API입니다.
요청하기
OpenWeatherMap 문서에서는 다음을 지정합니다. 현재 날씨를 요청하기 위한 형식 방법은 다음과 같습니다.
http://api.openweathermap.org/data/2.5/weather?q=[location]&apikey=[apikey]
URL은 첫 번째 승인 예시를 제공합니다. apikey
매개변수는
값은 사용자마다 고유합니다 이 키는
가입하는 방법에 대해 자세히 알아보세요.
등록 후, 다음과 같이 키를 사용하여 요청을 실행할 수 있습니다.
const location = 'London,uk';
const apikey = 'da.......................81'; // Replace with your API key
const currentWeatherUrl = `http://api.openweathermap.org/data/2.5/weather?q=${location}&apiKey=${apiKey}`;
const response = UrlFetchApp.fetch(currentWeatherUrl);
console.log(response.getContentText());
이 코드를 실행하면 JSON이라는 긴 문자열이 생성됩니다. Google Ads 스크립트의 로깅 창에 기록되는 텍스트입니다.
다음 단계는 이를 있습니다.
JSON 데이터
많은 API가 JSON 형식으로 응답을 제공합니다. 이것은 객체, 배열 및 기본 유형 등의 JavaScript 객체 직렬화 문자열로 표현 및 전송할 수 있습니다.
JSON 문자열(예:
OpenWeatherMap—JavaScript 객체로 돌아가서
JSON.parse
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다. 위의 예를 계속 살펴보겠습니다.
const json = response.getContentText();
const weatherData = JSON.parse(json);
console.log(weatherData.name);
// "London"
JSON.parse
메서드는 문자열을 속성이 있는 객체로 변환합니다.
name
입니다.
자세한 내용은 파싱 응답 섹션을 참고하세요. API 응답을 처리하는 방법을 알아봅니다
오류 처리
서드 파티 API로 작업할 때 오류 처리는 중요한 고려사항입니다. 제3자 API는 자주 변경되고 예상치 못한 응답 값
- API의 URL이나 매개변수는 사용자 모르게 변경될 수 있습니다.
- API 키 (또는 기타 사용자 인증 정보)가 만료될 수 있습니다.
- 응답 형식은 예고 없이 변경될 수 있습니다.
HTTP 상태 코드
예기치 않은 응답이 발생할 수 있으므로 HTTP
상태 코드를 반환합니다. 기본적으로
HTTP 오류 코드가 발생하면 UrlFetchApp
에서 예외가 발생합니다. 받는사람
아래와 같이 선택적 매개변수를 전달해야 합니다.
다음 예를 참고하세요.
const options = {
muteHttpExceptions: true
}
const response = UrlFetchApp.fetch(url, options);
// Any status code greater or equal to 400 is either a client or server error.
if (response.getResponseCode() >= 400) {
// Error encountered, send an email alert to the developer
sendFailureEmail();
}
응답 구조
서드 파티 API가 변경될 때 개발자가 이를 바로 인지하지 못하는 경우가 많습니다.
스크립트에 영향을 줄 수 있는 변경사항에 대해서 알아보겠습니다. 예를 들어 name
속성이
위의 예는 OpenWeatherMap 예시에서 반환된 모든 스트립트를 locationName
로
사용할 수 없게 됩니다
따라서 반환된 구조가 예:
const weatherData = JSON.parse(json);
if (weatherData && weatherData.name) {
console.log('Location is : ' + name);
} else {
console.log('Data not in expected format');
}
UrlFetchApp을 사용한 POST 데이터
OpenWeatherMap을 사용한 입문용 예
가져올 수 있습니다 일반적으로 원격 위치에서 상태를 변경하지 않는 API 호출은
서버에서 HTTP
GET
사용
메서드를 사용하여 축소하도록 요청합니다.
GET
메서드는 UrlFetchApp
의 기본값입니다. 그러나 일부 API 호출,
예를 들어 SMS 메시지를 보내는 서비스에 대한 호출에는 다른 방법이 필요합니다.
POST
또는 PUT
등).
다음 예에서는 UrlFetchApp
와 함께 POST
호출을 사용하는 방법을 보여줍니다.
공동작업 메시징인 Slack과의 통합을 시연합니다
애플리케이션을 사용하여 Slack 사용자 및 그룹에 Slack 메시지를 전송합니다.
Slack 설정
이 가이드에서는 이미 Slack 계정에 가입했다고 가정합니다.
이전 예의 OpenWeatherMap과 마찬가지로 토큰을 사용하여 메시지 전송을 사용 설정합니다. Slack에서 제공하는 고유 URL을 사용하면 팀에 메시지를 보낼 수 있습니다. 이를 수신 웹훅이라고 합니다.
수신 웹훅 설정: 안내에 따라 수신 웹훅 통합을 추가합니다. 이 프로세스가 메시지에 사용할 URL을 발행해야 합니다.
POST 요청 만들기
수신 웹훅을 설정한 후 POST
요청을 하려면
options
UrlFetchApp.fetch
:
method
: 언급했듯이 기본값은GET
이지만 여기서는 재정의하고POST
로 설정합니다.payload
:POST
의 일부로 서버에 전송되는 데이터입니다. 합니다. 이 예시에서 Slack은 JSON 형식으로 직렬화된 객체를 예상합니다. Slack 문서를 참조하세요. 이를 위해JSON.stringify
드림 메서드가 사용되고Content-Type
가application/json
로 설정됩니다.// Change the URL for the one issued to you from 'Setting up Slack'. const SLACK_URL = 'https://hooks.slack.com/services/AAAA/BBBB/CCCCCCCCCC'; const slackMessage = { text: 'Hello, slack!' }; const options = { method: 'POST', contentType: 'application/json', payload: JSON.stringify(slackMessage) }; UrlFetchApp.fetch(SLACK_URL, options);
확장된 Slack 예
위의 예시는 Slack으로 메시지를 수신하기 위한 최솟값을 보여줍니다. 확장된 sample은 캠페인 실적 보고서 작성 및 전송 신고 형식 지정 및 표시 옵션도 제공합니다.
Slack에서 메시지 형식을 참조하세요. 문서를 참조하세요.
양식 데이터
위의 예에서는 JSON 문자열을 payload
속성으로 사용하는 방법을 보여주었습니다.
(POST
요청)
payload
의 형식에 따라 UrlFetchApp
는 다른 접근 방식을 취합니다.
다음과 같이 POST
요청을 생성합니다.
payload
이 문자열인 경우 문자열 인수는 요청 본문입니다.payload
가 객체(예: 값의 맵)인 경우:{to: 'mail@example.com', subject:'Test', body:'Hello, World!'}
키-값 쌍은 양식 데이터로 변환됩니다.
subject=Test&to=mail@example.com&body=Hello,+World!
또한 요청의
Content-Type
헤더가 다음과 같이 설정됩니다.application/x-www-form-urlencoded
입니다.
일부 API는 POST 요청을 제출할 때 양식 데이터를 사용해야 하므로 JavaScript 객체에서 양식 데이터로 자동 변환이 특히 유용합니다. 염두에 두세요.
HTTP 기본 인증
HTTP 기본 인증은 다음 중 하나입니다. 가장 간단한 형식의 인증으로서 많은 API에서 사용됩니다.
인증은 암호화된 사용자 이름과 비밀번호를 각 요청의 HTTP 헤더
요청 구성
인증된 요청을 생성하려면 다음 단계를 따라야 합니다.
- 암호는
콜론(예:
username:password
) - 암호를 Base64로 인코딩합니다. 예를 들어
username:password
은 다음과 같이 됩니다.dXNlcm5hbWU6cGFzc3dvcmQ=
입니다. Authorization
헤더를Authorization: Basic <encoded passphrase>
형식으로 요청에 첨부합니다.
다음 스니펫은 Google Ads 스크립트에서 이 작업을 수행하는 방법을 보여줍니다.
const USERNAME = 'your_username';
const PASSWORD = 'your_password';
const API_URL = 'http://<place_api_url_here>';
const authHeader = 'Basic ' + Utilities.base64Encode(USERNAME + ':' + PASSWORD);
const options = {
headers: {Authorization: authHeader}
}
// Include 'options' object in every request
const response = UrlFetchApp.fetch(API_URL, options);
기본 인증 샘플
코드 샘플 섹션에는 HTTP 기본 인증의 사용을 보여주는 두 가지 샘플이 포함되어 있습니다.
Plivo
Plivo는 수신자의 모든 정보를 SMS 메시지를 수신할 수 없습니다. 이 샘플은 메시지를 보낼 수 있습니다
- Plivo에 등록합니다.
- 샘플 스크립트를 Google Ads에서 새 스크립트를 만드는 것입니다.
PLIVO_ACCOUNT_AUTHID
및PLIVO_ACCOUNT_AUTHTOKEN
값을 관리 대시보드에서 확인할 수 있습니다.- 다음 알림 스크립트에 명시된 이메일 주소를 입력하세요. 오류가 발생했습니다.
- Plivo를 사용하려면 번호를 구매하거나 무료 체험에 번호를 추가해야 합니다. 있습니다. 다음을 수행할 수 있는 샌드박스 번호 추가 무료 체험판 계정으로 사용할 수 있습니다.
- 발신자와 수신자로 표시될 번호를 모두 추가하세요. 있습니다.
- 스크립트의
PLIVO_SRC_PHONE_NUMBER
를 샌드박스 번호 중 하나로 업데이트 방금 등록했습니다. 여기에는 국제 국가 코드가 포함되어야 합니다. 예를 들어 영국 번호는447777123456
입니다.
Twilio
Twilio는 메시지를 주고받고 SMS 메시지를 수신할 수 없습니다. 이 샘플은 메시지를 보낼 수 있습니다
- Twillio에 등록합니다.
- 샘플 스크립트를 붙여넣습니다. Google Ads에서 새 스크립트에 입력하는 것입니다
TWILIO_ACCOUNT_SID
및TWILIO_ACCOUNT_AUTHTOKEN
값을 값(계정 콘솔 페이지 참고)TWILIO_SRC_PHONE_NUMBER
를 대시보드에서 메시지를 보낼 수 있도록 Twilio에서 승인한 번호입니다.
OAuth 1.0
널리 사용되는 많은 서비스에서는 인증에 OAuth를 사용합니다. OAuth는 다양한 형태로 확인할 수 있습니다
반면 HTTP 기본 인증에서는 사용자가 사용자 이름과 비밀번호가 하나뿐이므로 OAuth를 통해 서드 파티 애플리케이션이 사용자의 계정 및 데이터에 대한 액세스 권한을 부여하며 해당 사용자의 서드 파티 애플리케이션에 도입할 수 있습니다 또한 액세스 범위도 선택할 수 있습니다
OAuth 1.0에 관한 배경 정보는 OAuth Core 가이드를 참고하세요. 특히 6. OAuth로 인증을 참조하세요. 3다리형 풀로 OAuth 1.0을 사용할 경우 프로세스는 다음과 같습니다.
- 애플리케이션('소비자')이 요청 토큰을 가져옵니다.
- 사용자가 요청 토큰을 승인합니다.
- 애플리케이션은 요청 토큰을 액세스 토큰으로 교환합니다.
- 이후의 모든 리소스 요청에 대해 액세스 토큰은 서명된 합니다.
서드 파티 서비스가 사용자 상호작용 없이 OAuth 1.0을 사용하는 경우 (예: Google Ads 스크립트에서 필요로 하기 때문에) 1,2, 3단계는 불가능합니다. 따라서 일부 서비스는 구성에서 액세스 토큰을 발급합니다. 애플리케이션이 4단계로 바로 이동할 수 있도록 합니다. 이를 가리켜 one-legged OAuth 1.0입니다.
Google Ads 스크립트의 OAuth 1.0
Google Ads 스크립트의 경우 각 스크립트는 보통 애플리케이션으로 해석됩니다. 일반적으로 서비스의 콘솔/관리 설정 페이지를 통해 다음과 같습니다.
- 스크립트를 나타내기 위한 애플리케이션 구성을 설정합니다.
- 스크립트로 확장되는 권한을 지정합니다.
- 사용할 고객 키, 고객 비밀번호, 액세스 토큰, 액세스 비밀번호 가져오기 즉, one-legged OAuth를 사용하는 것이 좋습니다
OAuth 2.0
OAuth 2.0은 대부분의 API에서 OAuth 2.0, 사용자 데이터입니다. 특정 서드 파티 서비스 부여의 계정 소유자 권한을 부여하여 사용자 데이터에 액세스할 수 있도록 합니다. 이 장점은 소유자가 다음과 같다는 점입니다.
- 애플리케이션과 계정 사용자 인증 정보를 공유할 필요가 없습니다.
- 데이터에 개별적으로 액세스할 수 있는 애플리케이션을 제어하고, 파악할 수 있습니다. 예를 들어 부여된 액세스 권한은 읽기 전용이거나 하위 집합일 수 있습니다.)
Google Ads 스크립트에서 OAuth 2.0을 사용하는 서비스를 사용하는 방법은 다음과 같습니다. 단계:
- 스크립트 외부
Google Ads 스크립트에서 서드 파티 API를 참조하세요. 대부분의 경우 application을 설정합니다. 이 애플리케이션은 Google Ads 스크립트를 나타냅니다
Google Ads 스크립트 애플리케이션에 적용할 액세스 권한 지정 일반적으로 클라이언트 ID가 할당됩니다. 이를 통해 OAuth 2를 사용하여 그 데이터의 어떤 측면을 보거나 수정할 수 있습니다.
- 스크립트
원격 서버를 통해 승인합니다. 권한 부여 유형에 따라 허용하는 경우 흐름이라고 하는 다른 단계 집합이 액세스 토큰이 결국에는 모든 후속 요청에 대해 해당 세션에 사용됩니다.
API 요청을 만듭니다. 각 요청에서 액세스 토큰을 전달합니다.
승인 흐름
각 권한 부여 유형과 상응하는 흐름은 다양한 사용 시나리오에 부합합니다. 대상 예를 들어 사용자가 양방향 콘텐츠에 참여할 때는 다른 흐름이 사용됩니다. 애플리케이션이 실행되어야 하는 시나리오와 대조적으로 백그라운드에 업로드되지 않습니다.
API 제공업체가 허용하는 권한 부여 유형을 결정하며 이 내용은 사용자가 API 통합을 진행하는 방법을 설명합니다.
구현
다양한 OAuth 흐름에서 목표는 모두 그런 다음 나머지 세션에서 요청을 인증하는 데 사용할 수 있습니다.
샘플 라이브러리 는 서로 다른 흐름 유형에 대해 인증하는 방법을 보여줍니다. 이러한 각 메서드는 액세스 토큰을 가져와 저장하는 객체를 반환합니다. 인증된 요청을 용이하게 합니다
일반적인 사용 패턴은 다음과 같습니다.
// Authenticate using chosen flow type
const urlFetchObj = OAuth2.<flow method>(args);
// Make request(s) using obtained object.
const response1 = urlFetchObj.fetch(url1);
const response2 = urlFetchObj.fetch(url2, options);
클라이언트 사용자 인증 정보 부여
클라이언트 사용자 인증 정보 부여는 다음과 같습니다. 간단한 형태의 OAuth2 흐름 중 하나로, 애플리케이션과 발급된 인증서의 발급에 대한 대가로, 애플리케이션에 고유한 시간 제한이 있는 액세스 토큰입니다.
// Access token is obtained and cached.
const authUrlFetch = OAuth2.withClientCredentials(
tokenUrl, clientId, clientSecret, optionalScope));
// Use access token in each request
const response = authUrlFetch.fetch(url);
// ... use response
갱신 토큰 부여
갱신 토큰 부여는 클라이언트 사용자 인증 정보 부여와 유사하지만 서버에 대한 간단한 요청은 이 요청을 수행하는 데 사용할 수 있는 액세스 토큰을 확인할 수 있습니다.
갱신 토큰 받기
갱신 토큰 부여와의 차이점은 애플리케이션 구성에서 클라이언트 사용자 인증 정보 부여에 필요한 (예: 서비스의 제어판에서) 갱신 토큰이 승인되어 승인 코드 등 복잡한 절차의 일부로 권한 부여를 해야 하며 상호작용:
- OAuth 플레이그라운드를 사용하여 갱신 토큰 가져오기
OAuth2 플레이그라운드는 사용자가 액세스할 수 있는 UI를 제공합니다. 승인 코드 부여를 단계별로 진행하여 갱신 토큰을 얻습니다.
오른쪽 상단의 설정 버튼을 사용하면 다음과 같이 OAuth 흐름에서 사용할 수 있습니다.
- 승인 엔드포인트: 승인 흐름의 시작으로 사용됩니다.
- 토큰 엔드포인트: 액세스 토큰을 얻기 위해 갱신 토큰과 함께 사용됩니다.
- client ID and security(클라이언트 ID 및 보안 비밀): 애플리케이션의 사용자 인증 정보입니다.
- 스크립트를 사용하여 갱신 토큰 받기
절차를 완료하는 대신 스크립트 기반의 대안을 사용할 수 있습니다. 갱신 토큰 생성 샘플입니다.
갱신 토큰 사용
초기 승인이 완료되면 서비스에서 새로고침을 실행할 수 있습니다. 토큰을 제공합니다. 아래에 두 가지 예가 나와 있습니다.
const authUrlFetch = OAuth2.withRefreshToken(tokenUrl, clientId, clientSecret,
refreshToken, optionalScope);
const response = authUrlFetch.fetch(url);
// ... use response
Search Ads 360 예
Search Ads 360은 갱신 토큰과 함께 사용할 수 있는 API의 예입니다. 이 샘플에서는 스크립트가 다음을 생성한 후 보고서를 참조하세요. 검색 광고 360 API 참조에서 다른 작업에 대한 자세한 내용을 확인하세요. 몇 가지 있습니다.
스크립트 만들기
- API 콘솔에서 새 프로젝트를 만듭니다. 클라이언트 ID, 클라이언트 비밀번호 및 갱신 토큰을 얻는 방법은 절차에 따라 처리되어야 합니다. DoubleClick Search API가 사용 설정되었는지 확인합니다.
- 붙여넣기: 스크립트를 Google Ads에 새 스크립트를 추가하는 것입니다.
- 샘플 OAuth2 라이브러리를 살펴보겠습니다
- 클라이언트 ID, 클라이언트 비밀번호, 갱신 토큰을 사용할 수 있습니다
Apps Script Execution API 예시
이 예는 Apps Script를 사용하여 Apps Script에서 기능을 실행하는 방법을 보여줍니다. Script Execution API를 사용하는 것이 좋습니다. 이렇게 하면 Apps Script에서 Google Ads 스크립트에서 호출할 수 없습니다.
Apps Script 스크립트 만들기
새 스크립트를 만듭니다. 다음 샘플은 Drive 파일 10개:
function listFiles() {
const limit = 10;
const files = [];
const fileIterator = DriveApp.getFiles();
while (fileIterator.hasNext() && limit) {
files.push(fileIterator.next().getName());
limit--;
}
return files;
}
실행을 위해 Apps Script 구성
- 스크립트를 저장합니다.
- 리소스 > Cloud Platform 프로젝트에 있습니다.
- 프로젝트 이름을 클릭하여 API 콘솔로 이동합니다.
- API 및 '서비스'로 이동합니다.
- 적절한 API(이 경우 Drive API, Apps 스크립트 실행 API를 참고하세요.
- 메뉴의 사용자 인증 정보 항목에서 OAuth 사용자 인증 정보를 만듭니다.
- 스크립트로 돌아가 게시 > API 실행 파일로 배포
Google Ads 스크립트 만들기
- 붙여넣기: 스크립트를 Google Ads에서 새 스크립트를 만드는 것입니다.
- 또한 샘플 OAuth2 라이브러리를 살펴보겠습니다
- 클라이언트 ID, 클라이언트 비밀번호, 갱신 토큰을 사용할 수 있습니다
서비스 계정
위의 권한 부여 유형에 대한 대안은 서비스 내의 계정을 참조하세요.
서비스 계정은 사용자 액세스에 사용되지 않는다는 점에서 위와 다릅니다. 데이터: 인증 후 서비스 계정에서 대신 요청을 전송합니다. 애플리케이션의 권한을 부여할 수 있습니다. 예를 들어 서비스 계정이 Drive API를 사용하여 파일을 만들어야 했습니다. 서비스 계정에 속하며 기본적으로 액세스 권한이 없는 프로젝트 소유자입니다
Google Natural Language API 예시
Natural Language API는 감정 분석 및 항목 분석을 사용합니다
이 예는 감정 (광고 제목 또는 내용 입력란 포함) 이를 통해 메시지의 규모와 긍정적이라는 두 가지 의미가 있습니다. 케이크 판매 또는 런던 최고의 케이크를 판매합니다. 지금 구매하세요?
스크립트 설정
- API 콘솔에서 새 프로젝트 만들기
- 자연어 사용 설정 API
- 프로젝트에 결제를 사용 설정합니다.
- 서비스 만들기 계정을 선택합니다. 사용자 인증 정보 JSON 파일을 다운로드합니다.
- 붙여넣기: 스크립트를 새 스크립트로 사용할 수 있습니다.
- 또한 샘플 OAuth2 라이브러리를 살펴보겠습니다
- 필요한 값을 바꿉니다.
<ph type="x-smartling-placeholder">
- </ph>
serviceAccount
: 서비스 계정의 이메일 주소입니다(예:xxxxx@yyyy.iam.gserviceaccount.com
입니다.key
: 서비스를 만들 때 다운로드한 JSON 파일의 키입니다. 계정.-----BEGIN PRIVATE KEY...
에 시작하여...END PRIVATE KEY-----\n
에 끝납니다.
API 응답
API는 다양한 형식의 데이터를 반환할 수 있습니다. 이 중 가장 주목할 만한 것은 XML입니다. JSON 등이 있습니다
JSON
JSON은 일반적으로 XML보다 응답 형식을 선택합니다. 하지만, 여전히 몇 가지 문제가 발생할 수 있습니다.
응답 확인
API 호출에서 성공적인 응답을 얻으면 일반적인
다음 단계는 JSON.parse
를 사용하여 JSON 문자열을 JavaScript로 변환하는 것입니다.
객체를 지정합니다. 이 시점에서 파싱이 필요한 경우를 처리하는 것이
실패:
const json = response.getContentText();
try {
const data = JSON.parse(json);
return data;
} catch(e) {
// Parsing of JSON failed - handle error.
}
또한 API를 직접 제어할 수 없는 경우 API의 구조를 응답이 변경될 수 있으며 속성이 더 이상 존재하지 않을 수 있습니다.
// Less good approach
// Assumes JSON was in form {"queryResponse": ...} when parsed.
const answer = data.queryResponse;
// Better approach
if (data && data.queryResponse) {
const answer = data.queryResponse;
} else {
// Format of API response has changed - alert developer or handle accordingly
}
XML
유효성 검사
XML은 여전히 API 빌드에 널리 사용되는 형식입니다. API 호출의 응답
는
XmlService
parse
메서드를 사용하여 축소하도록 요청합니다.
const responseText = response.getContentText();
try {
const document = XmlService.parse(responseText);
} catch(e) {
// Error in XML representation - handle accordingly.
}
XmlService.parse
는 XML의 오류를 감지하고 예외를 발생시킵니다.
XML의 유효성을 검사하는 기능을 제공하지 않습니다.
사용할 수 있습니다
루트 요소
XML 문서가 성공적으로 파싱되면 루트 요소를 가져옵니다.
getRootElement()
메서드 사용:
const document = XmlService.parse(responseText);
const rootElement = document.getRootElement();
네임스페이스
다음 예에서 Sportradar API는 는 선택한 경기의 축구 결과를 가져오는 데 사용됩니다. XML 응답은 다음과 같은 형식을 사용합니다.
<schedule xmlns="http://feed.elasticstats.com/schema/soccer/sr/v2/matches-schedule.xsd">
<matches>
...
</matches>
</schedule>
네임스페이스가 루트 요소에 어떻게 지정되는지 확인하세요. 이로 인해 다음과 같습니다.
- 문서에서 네임스페이스 속성을 추출합니다.
- 하위 요소를 순회하고 액세스할 때 이 네임스페이스를 사용합니다.
다음 샘플은 위의 <matches>
요소에 액세스하는 방법을 보여줍니다.
문서 스니펫:
const document = XmlService.parse(xmlText);
const scheduleElement = document.getRootElement();
// The namespace is required for accessing child elements in the schema.
const namespace = scheduleElement.getNamespace();
const matchesElement = scheduleElement.getChild('matches', namespace);
가치 얻기
미식축구 일정의 샘플을 생각해 보면 다음과 같습니다.
<match status="..." category="..." ... >
...
</match>
다음과 같은 속성을 가져올 수 있습니다.
const status = matchElement.getAttribute('status').getValue();
요소 내에 포함된 텍스트는 getText()
를 사용하여 읽을 수 있지만
요소의 텍스트 하위 요소가 여러 개 있는 경우 연결되어야 합니다. 고려 사항
getChildren()
를 사용하고 여러 개의
텍스트를 입력합니다.
Sportradar 예
이 전체 Sportradar 예시는 축구 경기 세부정보 검색(특히 잉글랜드 프리미어 리그) 일치하지 않습니다. Socer API 는 Sportradar에서 제공하는 다양한 스포츠 피드 중 하나입니다.
Sportradar 계정 설정
- Sportradar 개발자 사이트로 이동합니다.
- 체험판 계정에 등록합니다.
- 등록이 완료되면 계정에 로그인합니다.
- 로그인한 후 MyAccount으로 이동합니다.
Sportradar는 여러 스포츠를 여러 API로 분리합니다. 예를 들어 Soccer API에 대한 액세스 권한은 구매할 수 있지만 Tennis API에 대한 액세스 권한은 구매할 수 없습니다. 각 만드는 애플리케이션에는 여러 가지 스포츠가 연결될 수 있습니다. 사용할 수 있습니다.
- 애플리케이션 아래에서 새 애플리케이션 만들기를 클릭합니다. 애플리케이션 제공 이름 및 설명을 입력하고 웹사이트 필드는 무시합니다.
- 사커 트라이얼 유럽 v2의 새 키 발급만 선택합니다.
- 애플리케이션 등록을 클릭합니다.
성공적으로 완료되면 새 API 키가 포함된 페이지가 생성됩니다.
- 샘플 스크립트를 붙여넣습니다. Google Ads에서 새 스크립트에 입력하는 것입니다
- 목록의 API 키를 위에서 얻은 키로 바꾸고 이메일 주소 입력란입니다.
문제 해결
타사 API를 사용하면 여러 가지 이유로 오류가 발생할 수 있습니다. 예:
- 클라이언트가 API에서 예상하지 못하는 형식으로 서버에 요청을 보냅니다.
- 클라이언트가 경험한 것과 다른 응답 형식을 기대합니다.
- 클라이언트가 잘못된 토큰이나 키 또는 자리표시자로 남은 값을 사용합니다.
- 사용량 한도에 도달한 클라이언트
- 클라이언트가 잘못된 매개변수를 제공합니다.
이러한 모든 경우 및 그 외 다른 사례에서도 원인을 파악하기 위한 첫 단계는 오류를 일으킨 응답의 세부사항을 조사하는 것입니다.
응답 파싱
기본적으로 오류 ( 코드가 400 이상인 경우) Google Ads 스크립트 엔진에서 발생합니다.
이러한 동작을 방지하고 오류와 오류 메시지가
선택적 매개변수의 muteHttpExceptions
속성을
UrlFetchApp.fetch
입니다. 예를 들면 다음과 같습니다.
const params = {
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, params);
if (response.getResponseCode() >= 400) {
// ... inspect error details...
}
일반 상태 코드
200 OK
은 성공을 나타냅니다. 응답에 예상한 다음 사항을 고려하세요.- 일부 API는 어떤 필드 및/또는 응답 형식을 사용합니다 자세한 내용은 API 문서를 참고하세요.
- API에는 호출할 수 있는 리소스가 여러 개 있을 수 있습니다. 자세한 내용은 다른 리소스가 더 적합할지 판단하기 위한 필요한 데이터를 반환합니다.
- 코드가 작성된 이후 API가 변경되었을 수 있습니다. 자세한 내용은 문서 또는 개발자에게 문의하세요.
400 Bad Request
는 일반적으로 서버에게 전송된 요청의 형식이나 구조를 나타냅니다. 검사 API 사양과 비교하여 있습니다. 다음에 관한 자세한 내용은 요청 검사를 참고하세요. 요청을 검사하는 방법을 설명합니다401 Unauthorized
는 일반적으로 확인할 수 있습니다.- API에서 기본 승인을 사용하는 경우
Authorization
헤더가 있는지 확인합니다. 요청에 전달되고 있습니다. - API에서 OAuth 2.0을 사용하는 경우 액세스 토큰을 받았는지 확인합니다. Bearer 토큰으로 제공됩니다.
- 승인과 관련하여 다른 변형이 있는 경우 필요한 사용자 인증 정보가 제공됩니다
- API에서 기본 승인을 사용하는 경우
403 Forbidden
는 사용자에게 해당 리소스에 대한 권한이 없음을 나타냅니다. 확인할 수 있습니다- 사용자에게 필요한 권한(예: 파일 기반 요청에서 사용자에게 파일 액세스 권한 부여
404 Not Found
는 요청된 리소스가 없음을 의미합니다.- API 엔드포인트에 사용된 URL이 올바른지 확인하세요.
- 리소스를 가져오는 경우 참조 중인 리소스가 존재하는지 확인 (예를 들어, 파일 기반 API의 경우 파일이 있는 경우)
요청 검사
요청 검사는 API 응답으로 요청이 잘못되었음을 나타낼 때 유용합니다.
예를 들어 400 상태 코드가 생성됩니다. 요청을 검사하려면 UrlFetchApp
에는 fetch()
메서드의 컴패니언 메서드인
getRequest()
이 메서드는 서버에 요청을 보내는 대신 전송되었을 수 있는 메시지를 수신한 다음 반환합니다. 이를 통해 사용자는 요청의 요소를 검사하여 요청이 올바른지 확인합니다.
예를 들어 요청의 양식 데이터가 연결된 많은 문자열로 구성되어 있는 경우 이 오류를 생성하기 위해 만든 함수에 오류가 있을 수 있습니다. 데이터를 수집하는 데 사용됩니다 간단하게 설명하면 다음과 같습니다.
const request = UrlFetchApp.getRequest(url, params);
console.log(request);
// Now make the fetch:
const response = UrlFetchApp.fetch(url, params);
// ...
요청의 요소를 검사할 수 있습니다.
요청 및 응답 로깅
이 요청에 대한 요청과 응답을 검사하는 전체 프로세스를 지원하기 위해
서드 파티 API의 경우 다음 도우미 함수를 드롭인으로 사용할 수 있습니다.
UrlFetchApp.fetch()
를 대체하여 요청과 응답을 모두 로깅할 수 있습니다.
코드의 모든
UrlFetchApp.fetch()
인스턴스를logUrlFetch()
입니다.스크립트 끝에 다음 함수를 추가합니다.
function logUrlFetch(url, opt_params) { const params = opt_params || {}; params.muteHttpExceptions = true; const request = UrlFetchApp.getRequest(url, params); console.log('Request: >>> ' + JSON.stringify(request)); const response = UrlFetchApp.fetch(url, params); console.log('Response Code: <<< ' + response.getResponseCode()); console.log('Response text: <<< ' + response.getContentText()); if (response.getResponseCode() >= 400) { throw Error('Error in response: ' + response); } return response; }
스크립트를 실행하면 모든 요청과 응답의 세부정보가 디버깅이 더 쉬워집니다.