Search code examples
google-apps-scriptgoogle-sheets-api

Looping through multiple google spreadsheets with google scripts


So I have multiple different spreadsheets inside of google drive (completely different files, not in the same file and different sheets), and I've been trying to figure out a way to pull data from all of the spreadsheets and populate one main sheet. But the problem I've been trying to figure out is that I can't seem to find a way to loop through all the spreadsheets.

I've read a suggestion on another similar question in which they said to create a different spreadsheet that stored all the spreadsheet id's inside of it. But my other problem is I won't know how many spreadsheets there are when I run the application because more are added all the time.

So, since their doesn't seem to be a way to loop through all the spreadsheets in your drive, is their a way in google scripts to make it so that anytime a file is created, the script runs and is able to obtain the newly created file id?

Thanks, Ethan.


Solution

  • Google Sheets have a MIME type of:

    application/vnd.google-apps.spreadsheet

    You can loop through all the files in your drive and log the MIME types of all the files, just to see what different MIME types might be:

    function getAllSheets() {
     // Log the name of every file in the user's Drive.
     var files = DriveApp.getFiles();
       while (files.hasNext()) {
         var file = files.next();
         Logger.log(file.getMimeType());
     }
    };
    

    You can get all files by a certain MIME type. This code prints the names of all the spreadsheets in your drive to the LOG.

    function getAllSheets() {
     // Log the name of every file in the user's Drive.
     var files = DriveApp.getFilesByType("application/vnd.google-apps.spreadsheet")
       while (files.hasNext()) {
         var file = files.next();
         Logger.log(file.getName());
     }
    };
    

    So, you can iterate through all the spreadsheets in your drive, or in a specific folder.