Servizio YouTube Analytics

visualizzazione di statistiche, metriche di popolarità e informazioni demografiche per canali e video di YouTube.

Il servizio YouTube Analytics ti consente di utilizzare l'API YouTube Analytics in Google Apps Script. Questa API consente agli utenti di recuperare statistiche di visualizzazione, metriche di popolarità e informazioni demografiche per i video e i canali YouTube.

Si tratta di un servizio avanzato che deve essere abilitato prima dell'uso.

Riferimento

Per informazioni dettagliate su questo servizio, consulta la documentazione di riferimento dell'API YouTube Analytics. Come tutti i servizi avanzati in Apps Script, il servizio YouTube Analytics utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per saperne di più, consulta la sezione Come vengono determinate le firme dei metodi.

Codice di esempio

Il seguente codice di esempio utilizza la versione 2 dell'API YouTube Analytics, nonché la versione 3 dell'API YouTube Data, a cui puoi accedere tramite il servizio YouTube in Apps Script.

Per segnalare problemi e trovare altro supporto, consulta la guida all'assistenza per l'API di YouTube.

Crea report

Questa funzione crea un foglio di lavoro contenente i conteggi giornalieri delle visualizzazioni, le metriche del tempo di visualizzazione e i conteggi dei nuovi iscritti per i video di un canale.

advanced/youtubeAnalytics.gs
/**
 * Creates a spreadsheet containing daily view counts, watch-time metrics,
 * and new-subscriber counts for a channel's videos.
 */
function createReport() {
  // Retrieve info about the user's YouTube channel.
  const channels = YouTube.Channels.list("id,contentDetails", {
    mine: true,
  });
  const channelId = channels.items[0].id;

  // Retrieve analytics report for the channel.
  const oneMonthInMillis = 1000 * 60 * 60 * 24 * 30;
  const today = new Date();
  const lastMonth = new Date(today.getTime() - oneMonthInMillis);

  const metrics = [
    "views",
    "estimatedMinutesWatched",
    "averageViewDuration",
    "subscribersGained",
  ];
  const result = YouTubeAnalytics.Reports.query({
    ids: `channel==${channelId}`,
    startDate: formatDateString(lastMonth),
    endDate: formatDateString(today),
    metrics: metrics.join(","),
    dimensions: "day",
    sort: "day",
  });

  if (!result.rows) {
    console.log("No rows returned.");
    return;
  }
  const spreadsheet = SpreadsheetApp.create("YouTube Analytics Report");
  const sheet = spreadsheet.getActiveSheet();

  // Append the headers.
  const headers = result.columnHeaders.map((columnHeader) => {
    return formatColumnName(columnHeader.name);
  });
  sheet.appendRow(headers);

  // Append the results.
  sheet
    .getRange(2, 1, result.rows.length, headers.length)
    .setValues(result.rows);

  console.log("Report spreadsheet created: %s", spreadsheet.getUrl());
}

/**
 * Converts a Date object into a YYYY-MM-DD string.
 * @param {Date} date The date to convert to a string.
 * @return {string} The formatted date.
 */
function formatDateString(date) {
  return Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM-dd");
}

/**
 * Formats a column name into a more human-friendly name.
 * @param {string} columnName The unprocessed name of the column.
 * @return {string} The formatted column name.
 * @example "averageViewPercentage" becomes "Average View Percentage".
 */
function formatColumnName(columnName) {
  let name = columnName.replace(/([a-z])([A-Z])/g, "$1 $2");
  name = name.slice(0, 1).toUpperCase() + name.slice(1);
  return name;
}