This code works fine when I'm accessing my own channel:
function test(){
const channelId = "UC702oPAKxKSQdxvqnAWlkiA"
let response = YouTube.Channels.list('statistics',{id:channelId});
let stats = response.items[0].statistics;
Logger.log(stats);
const oneMonthInMillis = 1000 * 60 * 60 * 24 * 30;
const today = new Date();
const lastMonth = new Date(today.getTime() - oneMonthInMillis);
const metrics = [
'views'
];
const result = YouTubeAnalytics.Reports.query({
ids: 'channel==' + channelId,
startDate: formatDateString(lastMonth),
endDate: formatDateString(today),
metrics: metrics.join(',')
// dimensions: 'day',
// sort: 'day'
});
const out = [["Subscriber Count","30 Day Views","Total Views"],
[stats.subscriberCount,result.rows[0][0],stats.viewCount]];
}
However, I need to use this on accounts for my various clients. When I change the channelId to the ID of the other channel I get "GoogleJsonResponseException: API call to youtubeAnalytics.reports.query failed with error: Forbidden." The YouTube API doesn't have any problem, but it doesn't give me any ability to check the 30-day values, only the total values. I've looked at the OAuth2 instructions and frankly I'm lost there. Can this code be made to work for other channels? Can I get OAuth2 working for any channel? Can I get OAuth2 working for a specific set of channels if the client can do something? Or is this basically impossible?