-
-
Save MichaelLawton/ec73c321d62d1b4eaf0f51ca478ccd92 to your computer and use it in GitHub Desktop.
function deleteSavedItems() { | |
var query = document.querySelectorAll("#sc-saved-cart input[value=Delete]") | |
if (query.length) { | |
query[0].click(); | |
} | |
if (query.length > 1) { | |
setTimeout(deleteSavedItems,100); | |
} | |
else { | |
console.log('Finished'); | |
} | |
} | |
deleteSavedItems(); |
Awesome: This script works great! Thank you @kyletmiller and @MichaelLawton
Challenge: I'd like to SELECT which items from my "Saved for later" that I will delete (or move to a wishlist).
Idea: Who can modify this script so that it first scrapes all the
sc-saved-cart
items to a text file? Then I can go edit that list, by deleting all the items I do NOT want to take action on. Then I would run a second script that pulls from my edited text file to delete (or move) ONLY the items listed in the text file.I would do this myself, but I don't know how to write/read output to a text file.
Hi @briantrease
Any luck with a selective delete/save to the list?
What if there will be a checkbox near every loaded item allowing for selective bulk action? It's better than txt, since you can see the picture.
We'll load the whole list by pressing "Page Down" and waiting multiple times; it loads as much as we need, select the items we want to delete/move and press a single button.
Is it too complicated to write?
If you're going to go through the saved items to review them anyway why not go through one pass on the website to add them to a wishlist first and then run this to remove everything from saved items when you're done? If you want them back in saved items again later you can easily do it from your wishlist.
For something as complicated as reading/writing from a file to modify the list - it might be better to make a chrome extension with a nice pop up UI view to select specific items/ranges of items. You can build a list of check boxes on click of the extension icon when the pop up opens and then pressing a save button actually executes the javascript on the page for matching items
Thanks @MichaelLawton and @mhujsak
Amazon has changed a little bit, here is the modified "Add to list" instead of "Move to Wish List" Version
you can get XXXXXXXXXXXX from your list URL as well https://www.amazon.com/hz/wishlist/ls/XXXXXXXXXXXX
I'll load it all and will leave it overnight. But if 10000 is very slow for you, modify it to a lower number.
p.s. deleteSavedItems workes fine without any mod
function moveToWishList() {
var query = document.querySelectorAll("#sc-saved-cart input[value='Add to list']")
if (query.length) {
query[0].click();
}
var query2 = document.querySelectorAll("#cldd-list-name-XXXXXXXXXXXX")
if (query2.length) {
query2[0].click();
}
if (query.length > 1) {
setTimeout(moveToWishList,10000);
}
else {
console.log('Finished');
}
}
moveToWishList();
If you're going to go through the saved items to review them anyway why not go through one pass on the website to add them to a wishlist first and then run this to remove everything from saved items when you're done? If you want them back in saved items again later you can easily do it from your wishlist.
For something as complicated as reading/writing from a file to modify the list - it might be better to make a chrome extension with a nice pop up UI view to select specific items/ranges of items. You can build a list of check boxes on click of the extension icon when the pop up opens and then pressing a save button actually executes the javascript on the page for matching items
Thanks, @jonathandean, for the suggestion... The problem is that some deleted/out-of-stock items don't have an "Add to cart" button. Instead, they have "See all buying options," which leads to 404 Dog pages. And I need them in my saved for later for later.. Not even sure if "add to list" would work on these items. Also, my saved-for-later is so big that I was never able to load it all. The crime time-outs and on it with a popup which probably will break the code
Sir, thank you for this quick script! I personally had to modify it for it to work for me. I use chrome and it would just stop after a couple of items. Since I had over 500, I rewrote it to continue or wait to load more. Sharing in case it helps anyone else. :D
function deleteSavedItems() { /* * This variable finds the delete option from saved items */ var query = document.querySelectorAll('#sc-saved-cart input[value=Delete]') /* * This variable finds the amount of saved items you have */ var savedItems = document.getElementById('sc-saved-cart-list-caption-text').getAttribute('data-saved-item-quantity'); //Loop until finished while(savedItems > 0) { //Check that our saved items hasn't reached zero index yet if (savedItems.length > 0) { //Check that there is a delete option for items if(query.length) { query[0].click(); } //The list isn't zero but no delete option was found, so wait for the page to refresh more saved items else if (!query.length) { setTimeout(deleteSavedItems, 200); } } //Quickly delete the items that are present if (query.length > 1) { setTimeout(deleteSavedItems,35); } savedItems--; } } deleteSavedItems();
Confirming this still works as of October 15th, 2023.
Thank you for this. This was a life saver. Stupid ex-wife had saved over 600 items.
Sir, thank you for this quick script! I personally had to modify it for it to work for me. I use chrome and it would just stop after a couple of items. Since I had over 500, I rewrote it to continue or wait to load more. Sharing in case it helps anyone else. :D
function deleteSavedItems() { /* * This variable finds the delete option from saved items */ var query = document.querySelectorAll('#sc-saved-cart input[value=Delete]') /* * This variable finds the amount of saved items you have */ var savedItems = document.getElementById('sc-saved-cart-list-caption-text').getAttribute('data-saved-item-quantity'); //Loop until finished while(savedItems > 0) { //Check that our saved items hasn't reached zero index yet if (savedItems.length > 0) { //Check that there is a delete option for items if(query.length) { query[0].click(); } //The list isn't zero but no delete option was found, so wait for the page to refresh more saved items else if (!query.length) { setTimeout(deleteSavedItems, 200); } } //Quickly delete the items that are present if (query.length > 1) { setTimeout(deleteSavedItems,35); } savedItems--; } } deleteSavedItems();
Confirming this still works as of October 15th, 2023. Thank you for this. This was a life saver. Stupid ex-wife had saved over 600 items.
I get "undefined" , Why?
I've modified this to work in 2024:
function deleteSavedItems() {
var elements = document.querySelectorAll("input[name^='submit.delete.']");
if (elements.length > 0) {
elements.forEach(function(element) {
element.click();
});
setTimeout(deleteSavedItems, 100);
} else {
console.log('Finished');
}
}
deleteSavedItems();
Should you desire to move your items to a Wish List instead of deleting them for good, you can do so with a slight extension to the great script already provided by @MichaelLawton. You'll need to view the source of your Shopping Cart page to get the list/registry ID of your specific list to save them to (should look something like "#registry-XXXXXXXXXXXXX").
function moveToWishList() { var query = document.querySelectorAll("#sc-saved-cart input[value='Move to Wish List']") if (query.length) { query[0].click(); } var query2 = document.querySelectorAll("#registry-XXXXXXXXXXXXX a") if (query2.length) { query2[0].click(); } if (query.length > 1) { setTimeout(moveToWishList,5000); } else { console.log('Finished'); } } moveToWishList();
THANK YOU!! @PeterSchuebel , @MichaelLawton and @kyletmiller
Can we do/ add a similar script (direct or via Grease Monkey etc) or via an Extension to do this WishList action(s)?
Amazon Wishlists: Select and Move multiple items at same time from One/ Default Wishlist to others?
Have collected a lot of items on Default Wishlist and would like to MOVE and organize them.
As shown below, one has to select each item one at time from a Default Wishlist to MOVE it to other ones to Organize them.
I was hoping there was some way to select multiple and have them MOVE together to another list - many at one go; I am guessing some kind "multi select" using Checkmarks or something else.
Thoughts & ideas welcome.
Addition to above solution
Working Chrome 08-2024
Just zoom out Chrome window to 25% (or minimum)
Paste this in the dev console
function deleteSavedItems() {
var elements = document.querySelectorAll("input[name^='submit.delete.']");
if (elements.length > 0) {
elements.forEach(function(element) {
element.click();
});
setTimeout(deleteSavedItems, 100);
} else {
console.log('Finished');
}
}
var intervalId = window.setInterval(function(){
deleteSavedItems();
}, 5000);
Later you can close the tab or you can paste the following code to stop the loop
clearInterval(intervalId)
I got a little frustrated last night with some of the query limit errors and having to restart the script (my soon to be ex-wife had over 750 items saved), so I rewrote the script, though I think the setInterval in the above script would have handled it just fine.
Looks like others also added similar checks to restart the script automatically when you get the quota limit errors. Here's a link to the version that I wrote last night which worked well the first time without any further intervention (super fun to watch the count go down in real time). Fingers cross it continues to work, works great in Oct 2024. https://github.com/mittingphx/WebsiteAutomation
Thank you :)