Lista de scripts:
// Inclua os termos ou palavras-chave no parâmetro "q:". Utilize a pesquisa booleana conforme indicado na documentação:
// <https://developers.google.com/youtube/v3/docs/search/list#apps-script>
function searchByKeyword() {
try {
const results = YouTube.Search.list('id,snippet', {
q: 'milei | lula',
maxResults: 5,
publishedAfter: '2023-09-01T00:00:00Z',
publishedBefore: '2023-10-01T00:00:00Z',
order: 'viewCount'
});
if (results === null) {
console.log('Unable to search videos');
return;
}
// Gerar os dados na Spreadsheet/Planilha.
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Ir para a aba ativa na Spreadsheet.
var sheet = spreadsheet.getActiveSheet();
// Criar um cabeçalho na primeira linha.
sheet.appendRow(["Video ID", "Title", "Video URL", "Publication Date", "Channel name", "Channel ID", "Category", "Live video?", "Description", "Thubnails (Default)", "Thubmnails (High)" ]);
// Escrever os resultados na aba.
for (var i = 0; i < results.items.length; i++) {
var video = results.items[i];
var row = [video.id.videoId, video.snippet.title, `https://www.youtube.com/watch?v=${video.id.videoId}`, video.snippet.publishedAt, video.snippet.channelTitle, video.snippet.channelId, video.id.kind, video.snippet.liveBroadcastContent, video.snippet.description, video.snippet.thumbnails.default.url, video.snippet.thumbnails.high.url ];
// Adicionar a linha à Spreadsheet.
sheet.appendRow(row);
}
} catch (err) {
console.log('Failed with an error %s', err.message);
}
}
/** Antes de executar este script em Apps Script, confirme que a Planilha/Spreadsheet contenha as seguintes colunas: "Video Link" "Video Title" "Publish Date" "Channel" "Views" "Comments/Replies" "Likes" */
// Este script usa uma solução do YouTube documentada no seguinte repositório e blog. Para adicionar todas as funções, consulte a documentação:
// Repositório:
// > <https://github.com/aliciawilliams/youtube-tracker>
// Publicação de blog:
// > <https://developers.google.com/apps-script/samples/automations/youtube-tracker>
// Relaciona os nomes das colunas da Spreadsheet com as variáveis. Se os nomes das colunas mudarem, atualize estas variáveis.
const COLUMN_NAME = {
VIDEO: 'Video Link',
TITLE: 'Video Title',
};
//Obtém os detalhes e as estatísticas dos vídeos do YouTube de todas as URLs de vídeos listadas na coluna "Video Link" de cada Spreadsheet.
function markVideos() { let ss = SpreadsheetApp.getActiveSpreadsheet(); let sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
// Executa o processo para cada aba da Spreadsheet.
sheets.forEach(function(dataSheet) {
let tabName = dataSheet.getName();
let range = dataSheet.getDataRange();
let numRows = range.getNumRows();
let rows = range.getValues();
let headerRow = rows[0];
// Encontra os índices das colunas.
let videoColumnIdx = headerRow.indexOf(COLUMN_NAME.VIDEO);
let titleColumnIdx = headerRow.indexOf(COLUMN_NAME.TITLE);
// Processa cada linha da Spreadsheet.
for (let i = 1; i < numRows; ++i) {
let row = rows[i];
// Extrai o ID do vídeo.
let videoId = extractVideoIdFromUrl(row[videoColumnIdx]);
// Processa cada linha que contém um ID de vídeo.
if (!videoId) {
continue;
}
// Executa a função getVideoDetails e extrai os dados solicitados do vídeo.
let detailsResponse = getVideoDetails(videoId);
let title = detailsResponse.items[0].snippet.title;
let publishDate = detailsResponse.items[0].snippet.publishedAt;
let views = detailsResponse.items[0].statistics.viewCount;
let likes = detailsResponse.items[0].statistics.likeCount;
let comments = detailsResponse.items[0].statistics.commentCount;
let channel = detailsResponse.items[0].snippet.channelTitle;
// Coleta os detalhes do título, data de publicação, canal, visualizações, comentários e curtidas, e os adiciona na aba.
let detailsRow = [title, publishDate, channel, views, comments, likes];
dataSheet.getRange(i + 1, titleColumnIdx + 1, 1, 6).setValues([detailsRow]);
}
});
}
//Obtém os detalhes dos vídeos do YouTube usando o serviço avançado do YouTube.
function getVideoDetails(videoId) { let part = "snippet,statistics"; let response = YouTube.Videos.list(part, {'id': videoId}); return response; }
//Extrai o ID do vídeo do YouTube da URL. (h/t <https://stackoverflow.com/a/3452617>)
function extractVideoIdFromUrl(url) { let videoId = url.split('v=')[1]; let ampersandPosition = videoId.indexOf('&'); if (ampersandPosition != -1) { videoId = videoId.substring(0, ampersandPosition); } return videoId; }