ReferenceError: YouTube no está definido / inserta comentarios de YouTube en una hoja de cálculo

Jayueño

Estoy intentando insertar comentarios de YouTube en una hoja de cálculo.

El video de YouTube del que quiero obtener comentarios es creado por mí, en la misma cuenta de Google. La API de datos de YouTube v3 está habilitada. Cuando ejecuto la función, ocurre un error:

ReferenceError: YouTube is not defined (line 9, file "Code"),

pero me parece bien. No tengo idea de lo que está mal en la línea 9.

Aquí está el código completo:

function getComments() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var video_list = ['YouTube_ID'];
var PageToken = '';

for (var i = 0; i < video_list.length; i++) {
  var video_id  = video_list[i];
  var video = YouTube.Videos.list('id, snippet, statistics', {id: video_id,});
  
  if (i == 0) {
    var sh = ss.getActiveSheet();
  } else {
    var sh = ss.insertSheet();
  }
  sh.setName(video.items[0].snippet.title);
  
  var row = 2;
  var col = 1;
  sh.getRange(1, 1).setValue("name");
  sh.getRange(1, 2).setValue("date");
  sh.getRange(1, 3).setValue("comment");

      
  while (true) {
    var comment_list = YouTube.CommentThreads.list('id, replies, snippet', {
      videoId: video_id,
      pageToken: PageToken,
      maxResults: 500,
    });
  
    for (var j = 0; j < comment_list.items.length; j++) {
      sh.getRange(row, col).setValue(comment_list.items[j].snippet.topLevelComment.snippet.authorDisplayName);
      sh.getRange(row, col + 1).setValue(comment_list.items[j].snippet.topLevelComment.snippet.publishedAt);
      sh.getRange(row, col + 2).setValue(comment_list.items[j].snippet.topLevelComment.snippet.textDisplay);
      row += 1;
      if (typeof comment_list.items[j].replies !== "undefined") {
         for (var k = 0; k < comment_list.items[j].replies.comments.length; k++) {
           sh.getRange(row, col).setValue(comment_list.items[j].replies.comments[k].snippet.authorDisplayName);
           sh.getRange(row, col + 1).setValue(comment_list.items[j].replies.comments[k].snippet.publishedAt);
           sh.getRange(row, col + 2).setValue(comment_list.items[j].replies.comments[k].snippet.textDisplay);
           row += 1;
         }
       }
    }
    PageToken = comment_list.nextPageToken
    if (typeof PageToken == "undefined") {
      break
    }
  }
}

}

El mensaje de error se parece a:

ingrese la descripción de la imagen aquí

Tanaike

Puntos de modificación:

  • De su secuencia de comandos y mensaje de error, pensé que el motivo de su mensaje de error YouTube is not definedse debe a la desactivación de la API de datos de YouTube v3 en los servicios avanzados de Google. Acerca de esto, ¿puede confirmar si la API de datos de YouTube v3 ya se habilitó en los servicios avanzados de Google nuevamente? Ref. Si aún no se ha habilitado, habilítelo y pruebe su script nuevamente.

  • Y, cuando vi tu guión, pensé que el costo del proceso del guión sería alto. Porque setValuese usa en los bucles. Ref Para reducir el costo de proceso de su script, me gustaría sugerir el siguiente flujo.

    1. Recupere todos los valores y póngalos en una matriz.
    2. Coloque la matriz en Hoja de cálculo.
  • Parece que maxResultsel método de "Videos: lista" es 50.

Cuando los puntos anteriores se reflejan en su secuencia de comandos, se convierte en lo siguiente.

Guión modificado:

function getComments() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var video_list = ['YouTube_ID'];
  var PageToken = '';
  var values = []; // Added
  for (var i = 0; i < video_list.length; i++) {
    var video_id  = video_list[i];
    var video = YouTube.Videos.list('id, snippet, statistics', {id: video_id});
    if (i == 0) {
      var sh = ss.getActiveSheet();
    } else {
      var sh = ss.insertSheet();
    }
    sh.setName(video.items[0].snippet.title);
    values.push(["name", "date", "comment"]); // Added
    while (true) {
      var comment_list = YouTube.CommentThreads.list('id, replies, snippet', {videoId: video_id, pageToken: PageToken, maxResults: 50});
      for (var j = 0; j < comment_list.items.length; j++) {
        var snippet = comment_list.items[j].snippet.topLevelComment.snippet;
        values.push([snippet.authorDisplayName, snippet.publishedAt, snippet.textDisplay]); // Added
        var replies = comment_list.items[j].replies;
        if (replies) {
          for (var k = 0; k < replies.comments.length; k++) {
            var comments = replies.comments[k].snippet;
            values.push([comments.authorDisplayName, comments.publishedAt, comments.textDisplay]); // Added
          }
        }
      }
      PageToken = comment_list.nextPageToken;
      if (typeof PageToken == "undefined") {
        break
      }
    }
    sh.getRange(1, 1, values.length, values[0].length).setValues(values); // Added
  }
}

Nota:

  • En este script, cuando existen los mismos nombres de hoja, se produce un error. Así que ten cuidado con esto.

Referencias:

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

ReferenceError: YouTube no está definido / inserta comentarios de YouTube en una hoja de cálculo

Raspado de comentarios de Youtube en R

Crear una hoja de comentarios

Imagen a una hoja de cálculo de Excel en R

Escribir en una hoja de cálculo de Excel

¿Una "constante" en la hoja de cálculo de Google?

Ver todos los comentarios en un video de YouTube

¿Por qué veo "error de referencia:" Calendario "no está definido" cuando ejecuto una secuencia de comandos de la API de hoja de cálculo de Google?

Cómo enfocarse / hacer clic en el cuadro de comentarios de YouTube con JS (DOM)

Cómo enfocarse / hacer clic en el cuadro de comentarios de YouTube con JS (DOM)

¿Cómo rastrear como recuentos de comentarios en videos de youtube?

Ordenar rango sin ordenarlo en una hoja de cálculo

Ordenar rango sin ordenarlo en una hoja de cálculo

Archivos destacados en una hoja de cálculo

Definir estilos OpenXml en una hoja de cálculo preexistente

¿Cómo obtener un feed de comentarios ingresados a través del cuadro de 'chat' durante una transmisión en vivo de YouTube?

Cómo deshabilitar los comentarios en la API de YouTube v3

¿Cómo raspar los comentarios de youtube con selenio en python?

ReferenceError: "e" no está definido | dificultades con varios scripts que se ejecutan en una sola hoja

Cómo verificar si una hoja de cálculo de Excel se está ejecutando, úsela en un comando if y ejecute la hoja si aún no se está ejecutando

Ejecutar un script en una hoja de cálculo para cambiar valores en otra hoja de cálculo

Establecer una hoja específica en una hoja de cálculo como destino del formulario

Confirme que un valor está en una columna de hoja de cálculo con Google Apps Script.

Función para buscar una hoja en otra hoja de cálculo en Google Sheets Scripts

Convierta una cadena en una fórmula en una hoja de cálculo de Google

Expandiendo una hoja de cálculo HTML

Comprobación de valores en blanco en una celda de una hoja de cálculo

Comprobación de valores en blanco en una celda de una hoja de cálculo

¿Cómo actualizar una fila de una hoja de cálculo basada en una fila de otra hoja de cálculo en MS Excel?

TOP Lista

CalienteEtiquetas

Archivo