Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Insert YouTube top level comment using Google Apps Script

I am trying to create a program using Google Apps Script that inserts a comment when a certain YouTube channel uploads. I have been able to get the latest YouTube video ID from the channel but when I try to insert a comment, it throws an error, "Parse Error (line 19, file 'Code')".

Line 19: YouTube.CommentThreads.insert("snippet", {

Here's my code:

function getVideo() {
  // MrBeast Channel ID: UCX6OQ3DkcsbYNE6H8uQQuVA
  var channel = "UCX6OQ3DkcsbYNE6H8uQQuVA";
  var fttx = "FIRST!";
  var results = YouTube.Channels.list("contentDetails", {"id": channel});
  for (var i in results.items) {
    var item = results.items[i];
    var playlistId = item.contentDetails.relatedPlaylists.uploads;
    // Uploads Playlist ID: UUX6OQ3DkcsbYNE6H8uQQuVA
    var playlistResponse = YouTube.PlaylistItems.list("snippet", {"playlistId": playlistId, "maxResults": 1});
    for (var j = 0; j < playlistResponse.items.length; j++) {
      var playlistItem = playlistResponse.items[j];
      var latvid = playlistItem.snippet.resourceId.videoId;
      comment(latvid, channel, fttx);
    }
  }
}
function comment(vid, ytch, fc) {
  YouTube.CommentThreads.insert("snippet", {
    "snippet.channelId": ytch,
    "snippet.videoId": vid,
    "snippet.topLevelComment.snippet.textOriginal": fc
  });
}
like image 809
Joshua Avatar asked Sep 10 '26 16:09

Joshua


1 Answers

Per Apps Script advanced services documentation, when specifying resources (such as a CommentThread) they are the first parameter to a method. If you use the Apps Script editor's autocomplete, it is very clear about the required order: enter image description here

Also note that you have incorrectly created your resource body - you have various sub-properties. For example, the snippet property is a required member of the CommentThread resource. Three "snippet.___" properties are not equivalent to one snippet property with 3 sub-properties.

Thus the solution to resolve the parse error in YouTube.CommentThreads.insert is to use the required method signature, with the required resource format:

function startCommentThread(vid, ytch, fc) {
  const resource = {
    snippet: {
      channelId: ytch,
      videoId: vid,
      topLevelComment: {
        snippet: {
          textOriginal: fc
        }
      }
    }
  };
  YouTube.CommentThreads.insert(resource, "snippet");
}
like image 60
tehhowch Avatar answered Sep 13 '26 18:09

tehhowch



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!