Ethan
Ethan

Reputation: 141

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.

Upvotes: 1

Views: 2225

Answers (2)

Alan Wells
Alan Wells

Reputation: 31320

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.

Upvotes: 3

eddyparkinson
eddyparkinson

Reputation: 3700

All google drive files

List all files using "Google Apps Script - Drive API"

// 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.getName());
}

From the example at the top: https://developers.google.com/apps-script/reference/drive/

getMimeType()

Look if the method exists. If obj.getMimeType===undefined its a folder. or, to make it more robust in case the api changes (adds the method to folders), use if (obj.getMimeType===undefined || obj.getMimeType().toLowerCase() =="application/vnd.google-apps.folder")

From How can I discriminate between file and folder in DriveApp using GAS

Upvotes: 0

Related Questions