This is a Google Apps Script that automatically adds new Youtube videos to playlists (a replacement for Youtube Collections feature).
This is done using Google Sheets for interface, Google Script + Youtube API v3 for executing and scheduling.
Add all new videos to Youtube playlists (uploaded later than some date);
from all subscribed channels;
from any list of channels (by channel ID);
from any other playlist (by playlist ID);
Set automatic interval for updates (optional);
Deploy as a web app to update or show playlist (optional);
Remove videos in the playlists that are older than a certain number of days before the execution of the script (optional).
Remove videos less than 1 minute in length (e.g. shorts) (optional)
If you ran into problems, here are some of the possible sources for solutions:
Copy the Sheet to your Google Drive. Afterwards you might want to update the script to the latest version of sheetScript.gs
Setup your playlists and channels (white cells in the Sheet):
?list=
)topdogmsn
)
/
) in https://www.youtube.com/user/someusername
)/
) in https://www.youtube.com/channel/UCzMVH2jEyEwXPBvyht8xQNw
)?list=
in https://www.youtube.com/playlist?list=PLd0LhgZxFkVKh_JNXcdHoPYo832Wu9fub
)ALL
, to add all new videos from all of your subscriptionshttps://www.youtube.com/c/skate702
). Please get the channel's ID as described in the Troubleshooting section under Cannot query for user <USERNAME>
No
to column E to remove all new videos under 1 minute in length from being added to the playlist.Run the script:
YouTube Controls
/ Update Playlists
(Optional) Adjust Timezone:
Extensions
/ Apps Script
appsscript.json
file in the editor, got to Project Settings
tab and select Show "appsscript.json" manifest file in editor
appsscript.json
in the editortimeZone
to your timezone. Pick one from this list
Save Project
/Ctrl+S
Functions
/ Update Playlists
. (Notice: when used first time, only a timestamp will be added (prevents overflow with old videos)).Extensions
/ Apps Script
Triggers
tab+ Add Trigger
updatePlaylists
-> Head
-> Time driven
-> Hour timer
-> Every hour
Save
Extensions
/ Apps Script
Deploy
-> New Deployment
Select type
. Ensure web app
is selected.Deploy
(you will get a special link to use)?pl=N
to select the Nth playlist in the spreadsheet.
?update=True
to force update all the playlists.tiny.cc/myplaylist?update=True&pl=3
will force update and open the third playlist.Often, changes will be made to the script which you will need to add to your copy of the sheet. There are two ways to do this:
Extensions
/ Apps Script
A: Only videos that are uploaded after the first run of the script are added (i.e. the timestamp is set to current date). New videos should be up. Alternatively, you can modify the timestamp yourself.
A: Cut (or delete) the contents of the playlist ID cell in the row you want to pause.
A: Feel free to buy me a cup of coffee here: . Although, I'd appreciate even more if you could help support other users and/or create pull requests for fixes and improvements!
A: See Feedback
section below.
A: A known fix is to use an account with Gmail, YouTube accounts are known to have this issue. Notice that you will only be able to use the playlists accessible by the authorized account (i.e. your 'Gmail' account in YouTube site).
TypeError: Second argument to Function.prototype.apply must be an array. (line 27, file "")
A: Do the step laid out in the instructions above: go to Resources > Developers Console Project > Click the link to your API console project > On the left, APIs & Auth > APIs > YouTube Data API > Enable API
. (thanks to josn0w and theit8514, also nmgoh and saso5tr)
TypeError: Cannot call method "toString" of undefined.
A: See https://stackoverflow.com/a/48912679/1544154 (thanks to LPanic)
TypeError: Cannot read property "items" from undefined. (line 169, file "Code")
A: If it only happens sometimes, it can be safely ignored, the next round will work normal again. If it happens on every execution, check your playlist and channel IDs. The script stops working if any of your playlists or channels doesn't exist, for example because it was deleted.
Quota
or Cannot (Search) YouTube
errorsA: Make sure the sheet can access YouTube's API:
Script Editor
(in menu: Extensions
/ Apps Script
) of the Sheet
Services
section, make sure YouTube
is there, otherwise use the plus button beside Services
and search for YouTube Data API v3
.Cannot query for user <USERNAME>
where <USERNAME>
is the channel's username found in the channel's shortened URL (i.e. youtube.com/c/<USERNAME>
or youtube.com/user/<USERNAME>
or youtube.com/@<USERNAME>
In the sheet, channel usernames and custom URLs cannot be used, only channel ids. To get a channel id for a specific channel, use the Get Channel ID
function in the custom menu. After inputting a channel's name and hitting Ok, it will give you channel URLs to verify it has found the right one. Once it's correct, click Yes and it will give you the channel ID, which you should then copy and paste into the spreadsheet.
A: Copy-paste the contents of the debug.gs file into your Script Editor
A: See Feedback
section below.