【发布时间】:2021-02-08 10:20:27
【问题描述】:
使用下面的链接,title 可以轻松更新:
https://developers.google.com/youtube/v3/live/docs/liveStreams/update?apix=true.
我希望使用 Google Apps 脚本中的 YouTube API 来实现相同的功能。下面的代码可以成功运行,但不会更新它,而是创建一个新流。
不同的是上面的链接不需要scheduledStartTime。但是 API 需要它。当scheduledStartTime 给出时,它会创建一个新的广播而不是更新原来的广播。如果将scheduledStartTime 分配给1970-01-01T00:00:00Z,就好像scheduledStartTime 没有被考虑在内。
要分配什么值,以便更新默认广播流而不是更新一个。 或者我还缺少什么来完成更新过程?
这是我的代码:
Logger.log('Starting');
service = getService();
if (service.hasAccess()) {
//Fetch the LiveBroadcast Title and Description Details
var url = "https://www.googleapis.com/youtube/v3/liveBroadcasts?broadcastStatus=upcoming&broadcastType=all";
var parameters = {'headers' : {'Content-Type': 'application/json', 'Authorization': 'Bearer ' + service.getAccessToken()}};
var response = UrlFetchApp.fetch(url,parameters);
var result = JSON.parse(response.getContentText());
//Logger.log(result);
var resource = result.items[0];
//Edit the LiveBroadcast Title and Description Details scheduledStartTime
var title = "as per today";
var description = "new desc check";
var scheduledStartTime ='1970-01-01T00:00:00Z';
var privacyStatus = 'public';
//var privacyStatus = 'unlisted';
//var scheduledStartTime = '2020-10-26T04:08:00Z';
data = {
'id' : 'MDaEvnSioI',
'status' : { 'privacyStatus' : 'public' , 'selfDeclaredMadeForKids' : false},
'snippet' : { 'title' : title , 'description' : description , 'scheduledStartTime' : scheduledStartTime }
};
//Update the LiveBroadcast
Logger.log("--");
var jsondata = JSON.stringify(data);
Logger.log(jsondata);
var options = {
'headers': {
'Authorization': 'Bearer ' + service.getAccessToken()
},
'contentType': 'application/json',
'method' : 'post',
'payload': jsondata,
'muteHttpExceptions':true
};
var response = UrlFetchApp.fetch(url2, options);
Logger.log(response.getContentText());
Logger.log('service has access...!!');
【问题讨论】:
-
太棒了,你提到的解决方案奏效了!接受...❤
-
我有一个与此相关的问题... youtube 中的令牌会在 1 小时(3600 秒)后过期,我需要每天运行两次此脚本。如何在运行脚本前自动获取新令牌?
-
要具体回答您的问题,我需要查看函数
getService。无论如何,这里是关于how to refresh an access token 的官方文档, -
如果您使用的是OAuth2 for Apps Script,请查看Service_html 的函数
refresh()。 -
但是既然你使用
hasAccess,那么你不应该做任何事情,因为同一个文档说:hasAccess() → {boolean}确定服务是否可以访问(已被授权并且没有' t 过期)。如果授予离线访问权限并且之前的令牌已过期,则此方法会尝试生成新令牌。
标签: javascript json google-apps-script youtube-data-api google-apps-script-api