#api #google-apps-script
#API #google-apps-script
Вопрос:
Я использовал этот фрагмент кода из https://developers.rebrandly.com/docs/api-custom-url-shortener . Я заполнил свой ключ. Также набрал рабочее пространство «Main Workspace» (не уверен, правильно ли это [или требуется]. на самом деле не похоже на идентификатор, но ничего другого найти не удалось).
(Я протестировал настройку своего домена с помощью интерфейса сокращения на Rebrandly.com сайт сам по себе. это работает. так что настройка должна быть в порядке).
function Rebrandly(){
var payload = {
destination: "https://www.youtube.com/channel/UCHK4HD0ltu1-I212icLPt3g",
domain: { fullName: "rebrand.ly" }
//, slashtag: "A_NEW_SLASHTAG"
//, title: "Rebrandly YouTube channel"
}
var headers = {
apikey: "YOUR_API_KEY",
workspace: "YOUR_WORKSPACE_ID"
}
var params = {
headers: headers,
contentType: "application/json",
method: 'post',
payload: JSON.stringify(payload),
muteHttpExceptions: true
}
var response = UrlFetchApp.fetch("https://api.rebrandly.com/v1/links", params);
Logger.log(response.getResponseCode());
if (response.getResponseCode() == 200){
var link = JSON.parse(response.getContentText())
Console.log(`Long URL was ${payload.destination}, short URL is ${link.shortUrl}`);
}
}
(Извините, возможно, вопрос выглядит глупо, но я просто программист-любитель)
Ответ №1:
Точки модификации:
- Из
I used this piece of code from https://developers.rebrandly.com/docs/api-custom-url-shortener. I filled my key. Also typed work space "Main Workspace" (not sure if that is correct [or required]. doesn't really look like an ID, but could not find anything else).
, я думал , что вы используете свой ключ API дляapikey: "YOUR_API_KEY"
. И вы используете свой идентификатор рабочей области вworkspace: "YOUR_WORKSPACE_ID"
качестве «Основного рабочего пространства».- Если я правильно понимаю, в данном случае я думаю, что «Основное рабочее пространство» — это имя рабочего пространства. Это не идентификатор рабочей области. Когда «Основное рабочее пространство» является идентификатором рабочего пространства, возникает такая ошибка. Я думаю, что это причина вашей проблемы. Чтобы получить свой идентификатор рабочей области, вы можете получить его с помощью следующего скрипта.
function getWorkSpaceId() { const apikey = "###"; // Please set your api key. const url = "https://api.rebrandly.com/v1/account/workspaces?orderBy=createdAtamp;orderDir=descamp;limit=25"; const res = UrlFetchApp.fetch(url, {headers: {apikey: apikey}}); const obj = JSON.parse(res.getContentText()) const workspaceIds = obj.map(({id}) => id); console.log(workspaceIds) }
- Если я правильно понимаю, в данном случае я думаю, что «Основное рабочее пространство» — это имя рабочего пространства. Это не идентификатор рабочей области. Когда «Основное рабочее пространство» является идентификатором рабочего пространства, возникает такая ошибка. Я думаю, что это причина вашей проблемы. Чтобы получить свой идентификатор рабочей области, вы можете получить его с помощью следующего скрипта.
- В вашем скрипте
Console.log(
длинный URL-адрес был $ {payload.destination}, короткий URL-адрес $ {link.shortUrl});
требуется изменить. В этом случае, пожалуйста, используйтеconsole.log
.
Модифицированный скрипт:
Когда getWorkSpaceId()
он включен в ваш скрипт, он становится следующим. Перед использованием этого скрипта, пожалуйста, установите для вашего ключа API apikey
значение .
function getWorkSpaceId(apikey) {
const url = "https://api.rebrandly.com/v1/account/workspaces?orderBy=createdAtamp;orderDir=descamp;limit=25";
const res = UrlFetchApp.fetch(url, {headers: {apikey: apikey}});
const obj = JSON.parse(res.getContentText())
const workspaceIds = obj.map(({id}) => id);
return workspaceIds;
}
function Rebrandly(){
var apikey = "YOUR_API_KEY"; // <--- Please set your api key.
var workspaceIds = getWorkSpaceId(apikey);
var workspaceId = "";
if (workspaceIds.length > 0) {
workspaceId = workspaceIds[0];
} else {
throw new Error("No workspace ID.");
}
var payload = {
destination: "https://www.youtube.com/channel/UCHK4HD0ltu1-I212icLPt3g",
domain: { fullName: "rebrand.ly" }
//, slashtag: "A_NEW_SLASHTAG"
//, title: "Rebrandly YouTube channel"
}
var headers = {
apikey: apikey,
workspace: workspaceId
}
var params = {
headers: headers,
contentType: "application/json",
method: 'post',
payload: JSON.stringify(payload),
muteHttpExceptions: true
}
var response = UrlFetchApp.fetch("https://api.rebrandly.com/v1/links", params);
Logger.log(response.getResponseCode());
if (response.getResponseCode() == 200){
var link = JSON.parse(response.getContentText())
console.log(`Long URL was ${payload.destination}, short URL is ${link.shortUrl}`);
}
}
Примечание:
- В этом модифицированном скрипте идентификатор 1-го рабочего пространства используется путем указания ключа api. Итак, это используется для тестирования скрипта. Но, если вы хотите использовать конкретный идентификатор рабочей области, пожалуйста, измените приведенный выше сценарий.
- Приведенный выше сценарий предполагает, что ваш ключ API действителен. Пожалуйста, будьте осторожны с этим.
Ссылки:
Комментарии:
1. Я просмотрел ссылки, которые вы добавили. Я понимаю, что я мог бы найти URL-адрес для идентификатора рабочего пространства. Но я не могу найти часть «{headers: {apikey: apikey}}», которую вы используете в выборке URL. Как вы это нашли? (Я вижу «apikey» для заголовка при использовании кнопки «попробовать». Это откуда он берется?)
2. @Zjost Спасибо за ответ. Я рад, что ваша проблема была решена. Что касается вашего нового вопроса о
I can't find the "{headers: {apikey: apikey}}" part that you use in the URLfetch. How did you find that?
том, когда я пытаюсь ввести примерное значение ключа api, чтобы «Попробовать» «/ v1 / account / workspaces» на Javascript, я подтвердилheaders: {apikey: '###'}
. Ссылка Если это не тот результат, который вы ожидаете, я приношу свои извинения.