UPD: as Google started to block unverified scripts, the only way to use it is copy-paste the source to your script editor. And verification requires some extra effort, so I didn't do it yet.
UPD2: if you have a lot of files it will reach the execution time limit and stop; you will need to run it multiple times (you can also set up automatic timed trigger for this)
I wrote a simple script for this. You can run it from here: https://script.google.com/macros/s/AKfycbyUvNoXzBMBDE9pnHkLUltliGwjip5x09t3PeTY_1KoXO45F6iz/exec
(if it gets stopped, just run it once again, and it will continue from where it left)
It will create two files in the root of your Drive, one displays progress and is deleted after script is completed. Other is the report which lists all folders and sizes. It looks like this.
Or you can just copy and paste the code into Google Script editor and run "doGet()" function from there:
function doGet(){
var progressFileCompletedFound = DriveApp.getRootFolder().searchFiles("title contains 'Folder Sizes Report Completed'");
if(progressFileCompletedFound.hasNext()) {
return ContentService.createTextOutput("Report file was already created in your Drive's root folder, exiting.");
}
CreateReportFile();
DriveApp.createFile("Folder Sizes Report Completed.txt", "You may safely delete this file.");
return ContentService.createTextOutput("Report file created in your Drive's root folder");
}
function CreateReportFile() {
var reportContent = CreateReport();
DriveApp.createFile('Folder Sizes Report.txt', reportContent);
}
function CreateReport(){
var reportContent = "";
var progressFileFound = DriveApp.getRootFolder().searchFiles("title contains 'Getting Folder Sizes,'");
var progressFile;
var report=[];
if(progressFileFound.hasNext()) {
progressFile = progressFileFound.next();
var json = progressFile.getBlob().getDataAsString();
try{
report = JSON.parse(json);
} catch(Exception) {
DriveApp.removeFile(progressFile);
progressFile = DriveApp.createFile("Getting Folder Sizes, 0 processed...", " ");
}
}
else {
progressFile = DriveApp.createFile("Getting Folder Sizes, 0 processed...", " ");
}
var f = DriveApp.getRootFolder();
AddFolderToReport(report, f, "/", progressFile);
DriveApp.removeFile(progressFile);
reportContent += "TotalSize MB FilesSize MB Path \r\n";
for(var i=0; i<report.length; i++)
reportContent += Utilities.formatString("%12.2f ", (report[i].totalSize / (1024*1024))) + Utilities.formatString("%11.2f ",(report[i].filesSize / (1024*1024))) + report[i].folderPath + "\r\n";
return reportContent;
}
function AddFolderToReport(report, currentFolder, currentPath, progressFile){
var report1 = [];
for(var i=0; i<report.length; i++)
if(report[i].folderPath == currentPath)
return report[i].totalSize;
var fChildren = currentFolder.getFolders();
var totalSize = 0;
while(fChildren.hasNext() && currentPath.length < 2000){
var nextF = fChildren.next();
totalSize += AddFolderToReport(report, nextF, currentPath + nextF.getName() + "/", progressFile);
}
var filesSize = 0;
var files = currentFolder.getFiles();
while(files.hasNext()){
filesSize += files.next().getSize();
}
totalSize += filesSize;
report.push({folderPath: currentPath, filesSize: filesSize, totalSize: totalSize});
progressFile.setName("Getting Folder Sizes, " + report.length + " processed...");
progressFile.setContent(JSON.stringify(report));
return totalSize;
}
UPD: the script was updated so that if it runs too long and is stopped, just run it once more and it will resume from where it left, using data stored in "Getting Folder Sizes ..." file.
There is no right combination of settings.
The Google Photos upload checkbox (in the Backup and Sync preferences) is a blanket toggle: it affects all the selected local backup/sync folders. So if you want to backup Drive-only files, you need to leave it unchecked and continue manually uploading your images to the Photos app.
As of yet, the B&S client does not allow fine-grained control of what gets uploaded into Photos. Also for backups, be reminded that Photos has limitations on file types and min/max sizes.
Workaround
As a workaround for periodic backups to Photos, you can try the following:
- (Make sure you don't have Drive and Photos synced with any of the 2 separate settings you mentioned)
- Open Backup & Sync Preferences → [your device]
For "Removing item", select "Don't remove items everywhere".
Select only the folder(s) you want to back up to Photos
- Select the "Upload newly added photos [...]" checkbox under the Google Photos Heading. Wait for everything to back up.
- Uncheck the checkbox under Google Photos again.
- Uncheck your images folder and re-check your Drive-only folders.
As a side-effect to using B&S, you also retain the images in your Google Drive. But they are linked invisibly to Photos, so:
- they don't eat drive quota (if HQ setting was chosen), and
- deleting them will also remove them from your Photos library.
Best Answer
When I ran into the same situation, I moved my files/folders from Bin into another folder. Moving doesn't require more space whereas copy does. Then download those files/folders. Once I had a copy locally I moved the files back to Bin and deleted them.