Rest API를 이용하여 다이나믹 링크를 자동으로 생성하는 방법
1. 웹 API 키
Firebase Console에서 Web API Key를 가져옵니다.
(그 전에 다이나믹 링크용 도메인 prefix설정을 먼저 해야 합니다)
2. Rest API
ㅇAPI endpoint(URL)
- https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=웹API키
ㅇ Header
- Content-Type: application/json
ㅇMethod
- post
Body
{
"dynamicLinkInfo": {
"domainUriPrefix": "https://도메인프리픽스.page.link",
"link": "여러분의URL?utm_source=sms&utm_medium=message&utm_campaign=test",
"androidInfo": {
"androidPackageName": "Android앱번들ID"
},
"iosInfo": {
"iosBundleId": "Android앱번들ID"
},
"navigationInfo": {
"enableForcedRedirect": true
},
"analyticsInfo": {
"googlePlayAnalytics": {
"utmSource": "sms",
"utmMedium": "message",
"utmCampaign": "test",
"utmTerm": "",
"utmContent": "",
"gclid": ""
},
"itunesConnectAnalytics": {
"at": "",
"ct": "",
"mt": "",
"pt": ""
}
}
},
"suffix": {
"option": "SHORT"
}
}
구글 스프레드 시트용 스크립트 작성
1. Apps Script를 메뉴에서 연다.
2. 아래 스크립트를 작성한다.
3. 삽입 - 그림 으로 대략 버튼을 만들어 넣는다.
4. 스크립트를 할당한다.
function createLink() {
var confirm = Browser.msgBox('다이나믹 링크를 생성하겠습니까?', Browser.Buttons.YES_NO);
if(confirm != 'yes'){return};
var ss = SpreadsheetApp.getActiveSpreadsheet(); //get active spreadsheet (bound to this script)
var sheet = ss.getSheets()[0];
var apiKey = '여러분의웹API키';
var apiUrl = 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=' + apiKey;
var offset = 0;
var execute_line = 1002;
var utm_source = "";
var utm_medium = "";
var utm_campaign = "";
var utm_term = "";
var utm_content = "";
var utm_url = "";
var landing_url = "";
var dynamic_link = "";
for(var row=2; row < execute_line ; row++){
utm_source = sheet.getRange(row, offset + 1).getValue();
utm_medium = sheet.getRange(row, offset + 2).getValue();
utm_campaign = sheet.getRange(row, offset + 3).getValue();
utm_term = sheet.getRange(row, offset + 4).getValue();
utm_content = sheet.getRange(row, offset + 5).getValue();
landing_url = sheet.getRange(row, offset + 6).getValue();
utm_url = sheet.getRange(row, offset + 7).getValue();
dynamic_link = sheet.getRange(row, offset + 8).getValue();
var delimeter = "?";
if (dynamic_link == "") {
if (landing_url != "") {
console.log("UTM URL("+(row-1)+"): " + utm_url);
if (landing_url.indexOf("?") > -1) {
delimeter = "&";
}
// Make a POST request with a JSON payload.
var data = {
"dynamicLinkInfo": {
"domainUriPrefix": "https://여러분의도메인prefix.page.link",
"link": landing_url + delimeter + "utm_source="+utm_source+"&utm_medium="+utm_medium+"&utm_campaign="+utm_campaign+"&utm_term="+utm_term+"&utm_content="+utm_content,
"androidInfo": {
"androidPackageName": "안드로이드앱번들ID"
},
"iosInfo": {
"iosBundleId": "ios앱번들ID"
},
"navigationInfo": {
"enableForcedRedirect": true
},
"analyticsInfo": {
"googlePlayAnalytics": {
"utmSource": utm_source,
"utmMedium": utm_medium,
"utmCampaign": utm_campaign,
"utmTerm": utm_term,
"utmContent": "",
"gclid": ""
},
"itunesConnectAnalytics": {
"at": "",
"ct": "",
"mt": "",
"pt": ""
}
}
},
"suffix": {
"option": "SHORT"
}
};
var options = {
'method' : 'post',
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data)
};
console.log(apiUrl);
console.log(options);
// return;
var response = UrlFetchApp.fetch(apiUrl, options); // get api endpoint
var json = response.getContentText(); // get the response content as text
var result = JSON.parse(json); //parse text into json
Logger.log(result); //log data to logger
// var stats=[]; //create empty array to hold data points
var date = new Date(); //create new date for timestamp
//The number in brackets refers to which instance we are looking at - soonest upcoming call is [0], next after that is [1], etc.
// stats.push(result.shortLink);
// stats.push(date); //timestamp
// //append the stats array to the active sheet
// sheet.appendRow(stats);
sheet.getRange(row, offset + 8).setValue(result.shortLink);
sheet.getRange(row, offset + 9).setValue(date);
// return;
} else {
break;
} // if (landing_url != "") {
} // if (dynamic_link == "") {
} // for(var row=2; row < 6 ; row++){
}
문서 포맷
'IT일반' 카테고리의 다른 글
에러 대응 Please log in via your web browser and then try again (0) | 2022.02.18 |
---|---|
DNS 캐시 삭제 (0) | 2022.02.16 |
AWS EC2 Linux 2에 nginx 프락시 서버 설정하기 SSL 까지 (0) | 2021.12.08 |
맥북에서 sftp로 파일 업로드 쉘스크립트 (0) | 2021.12.01 |
워드프레스 WP Mailer SMTP 생성 방법 (0) | 2021.02.22 |
댓글