Mk1
Mk1

Reputation: 77

When i run my script nothing happens

So i recently found this google drive script and tried to use it. The script should normally get file names and url on my google drive folder and copy them in a spreadsheet.

When i click Run, I get no error and nothing happens in my drive.

Is there variables i should change to make it work ?

PS : I'm very new to coding and can't seem to find what is wrong with this code

Thanks in advance for your help !

Here is the code :

function myFunction() {

  function listFilesInFolder(foldername) {
  // If we have not been provided a foldername, assume we will interact with user.
  var interactive = (typeof foldername === 'undefined');

  // Get name of folder to list
  if (interactive) {
    foldername = Browser.inputBox("List files in folder", "Enter folder name", Browser.Buttons.OK_CANCEL);
  }

  if (foldername === '') return;  // No name provided, exit quietly

  var folders = DriveApp.getFoldersByName(foldername);
  if (!folders.hasNext()) {
    if (interactive) Browser.msgBox("Folder not found.");
    return;
  }
  var folder = folders.next();
  var contents = folder.getFiles();

  var file, data, sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();

  sheet.appendRow(["Name", "Date", "Size", "URL", /*"Download",*/ "Description", "Type"]);

  // Loop over files in folder, using file iterator
  while (contents.hasNext()) {
    file = contents.next();

    if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET"
      // Skip displaying spreadsheets - I don't know why...
      continue;
    }

    data = [ 
      file.getName(),
      file.getDateCreated(),
      file.getSize(),
      file.getUrl(),
      //"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
      file.getDescription(),
      niceFileType( file.getMimeType() )
    ];

    sheet.appendRow(data);

  }
}

}

Upvotes: 1

Views: 861

Answers (2)

Jack Brown
Jack Brown

Reputation: 5892

Try this modified code in spreadsheet instead:

function myfunction(){
//Declaring the function listFolders to temp
var temp = function listFolders(foldername) {
  // If we have not been provided a foldername, assume we will interact with user.
  var interactive = (typeof foldername === 'undefined');

  // Get name of folder to list
  if (interactive) {
    foldername = Browser.inputBox("List files in folder", "Enter folder name", Browser.Buttons.OK_CANCEL);
  }

  if (foldername === '') return;  // No name provided, exit quietly

  var folders = DriveApp.getFoldersByName(foldername);
  if (!folders.hasNext()) {
    if (interactive) Browser.msgBox("Folder not found.");
    return;
  }
  var folder = folders.next();
  var contents = folder.getFiles();

  var file, data, sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();

  sheet.appendRow(["Name", "Date", "Size", "URL", /*"Download",*/ "Description", "Type"]);

  // Loop over files in folder, using file iterator
  while (contents.hasNext()) {
    file = contents.next();

    if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET"
      // Skip displaying spreadsheets - I don't know why...
      continue;
    }

    data = [ 
      file.getName(),
      file.getDateCreated(),
      file.getSize(),
      file.getUrl(),
      //"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
      file.getDescription(),
      file.getMimeType() 
    ];

    sheet.appendRow(data);

  }
}
// calls the  function listFolders below
temp()
}

Upvotes: 0

Spencer Easton
Spencer Easton

Reputation: 5782

Two issues. This needs to be ran in a script attached to a spreadsheet and you have a nested function.

Your code:

function myFunction() {
  function listFilesInFolder(foldername) {
    ...
  }
 }

remove the outer function decleration and its matching closing bracket. The code will run.

It should look like:

function listFilesInFolder(foldername) {
 ...
}

Upvotes: 1

Related Questions