Скрипт Google Apps — Передача данных из API YouTube

#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);
}