#javascript #google-apps-script #google-sheets #google-api #youtube-api
#javascript #google-apps-script #google-sheets #google-api #youtube-api
Вопрос:
Заранее приношу извинения — я полный новичок в использовании Google Apps Script.
У меня вопрос о том, как перенести данные из вызова API YouTube в Google Sheet. Я настроил приведенный ниже код, который выполняет поиск видео по идентификатору канала и циклически (чтобы превысить ограничение в 50 результатов).
Я хочу перенести четыре переменные, определенные в скрипте, в таблицу Google — Published At, Title, ID и URL, то есть информацию об этих четырех элементах для всех более чем 7000 видео на канале. Похоже, что вся эта информация успешно регистрируется с использованием строки Logger.log.
Теперь я хочу перенести информацию, которая зарегистрирована в Google Sheet. Я экспериментировал с различными способами сделать это, но мне удалось успешно восстановить только детали последнего видео.
Кто-нибудь может посоветовать код, который мне нужно было бы добавить в заключительный раздел после строки ‘var ActiveSheet’, чтобы это работало успешно?
Как я уже сказал, прошу прощения, если это глупый вопрос.
function myFunction() {
var nextPageToken = '';
while (nextPageToken != null) {
var sr = YouTube.Search.list("snippet", {
channelId:'UC14UlmYlSNiQCBe9Eookf_A',
maxResults: 50,
pageToken: nextPageToken
});
for (var j = 0; j < sr.items.length; j ) {
var srItem = sr.items[j];
var PublishedAt = srItem.snippet.publishedAt;
var Title = srItem.snippet.title;
var ID = srItem.id.videoId;
var URL = srItem.snippet.thumbnails.high.url;
Logger.log('[%s] Title: %s Id: %s Url: %s',
srItem.snippet.publishedAt,
srItem.snippet.title,
srItem.id.videoId,
srItem.snippet.thumbnails.high.url);
}
nextPageToken = sr.nextPageToken;
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
}
Любая помощь была бы высоко оценена.
Спасибо,
KC
Ответ №1:
Вам нужно захватить каждую строку и сохранить затем в массив. Затем вы можете вставить строки в таблицу. Следующий код делает это.
function myFunction() {
var nextPageToken = '';
// to hold data rows
var results = [];
// add header row
results.push(['Published At', 'Title', 'ID', 'URL']);
while (nextPageToken != null) {
var sr = YouTube.Search.list('snippet', {
channelId: 'UC14UlmYlSNiQCBe9Eookf_A',
maxResults: 50,
pageToken: nextPageToken
});
for (var j = 0; j < sr.items.length; j ) {
var srItem = sr.items[j];
var PublishedAt = srItem.snippet.publishedAt;
var Title = srItem.snippet.title;
var ID = srItem.id.videoId;
var URL = srItem.snippet.thumbnails.high.url;
// add every row
results.push([PublishedAt, Title, ID, URL]);
}
nextPageToken = sr.nextPageToken;
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// get range and set values
// row to start, col to start, how many rows, how many cols
sheet.getRange(1, 1, results.length, 4).setValues(results);
}