I have a code to get the parent folder of my GoogleSheet by using this code
var ssId = SpreadsheetApp.getActiveSpreadsheet().getId(); //get my GSheet ID
var parentFolder = DriveApp.getFileById(ssId).getParents().next(); //get the parent folder name
I've already share the base folder to the whole organization with editor rights.
Running the app by me it is running without any issue.
But when my colleague run the app, it is getting this error.
Exception: Cannot retrieve the next object: iterator has reached the end.
tried hasNext()
var ssId = SpreadsheetApp.getActiveSpreadsheet().getId(); //get my GSheet ID
var parentFolder = DriveApp.getFileById(ssId).getParents(); //get the parent folder
while (parentFolder .hasNext()) {
var temp1 = parentFolder .next();
Logger.log("Temp : "+temp1)
}
this is not returning anything from other users.
Any idea is this something to do with Google Permission Security issue or anything I've missed?
Edit Code Snippet
Code.gs
function doGet(request) {
return HtmlService.createTemplateFromFile('CustomerForm').evaluate().setTitle("Demo Form");
}
function uploadFile(vFolder,vFile ,vdata){
//upload folder
var drivepath = uploadFiletoDrive(vFolder);
var contentType = vdata.substring(5,vdata.indexOf(';')),
bytes = Utilities.base64Decode(vdata.substr(vdata.indexOf('base64,')+7)),
blob = Utilities.newBlob(bytes, contentType, vFile);
var folder = DriveApp.getFolderById(drivepath);
var file = folder.createFile(blob);
return file.getId();
}
function uploadFiletoDrive(folderName){
const ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
const parentFolder = DriveApp.getFileById(ssId).getParents().next(); // get the parent folder location
Logger.log(ssId)
Logger.log(parentFolder)
const subFolders = parentFolder.getFolders();
while (subFolders.hasNext()) {
let folder = subFolders.next();
// Returns the existing folder if found.
Logger.log(folder.getName())
if (folder.getName() === folderName) {
Logger.log("Folder exists")
Logger.log("Folder SSID : "+folder.getId())
return folder.getId();
}
}
// Creates a new folder if one doesn't already exist.
Logger.log("Folder Creating")
//creating the folder if not exists and will put the description
folder = parentFolder.createFolder(folderName);
Logger.log("New Folder SSID : "+folder.getId())
return folder.getId();
}
CustomerForm.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<table>
<tr>
<td> Folder Name : </td>
<td> <input type="text" id="FolderName"> </td>
</tr>
<tr>
<td> Input File : </td>
<td> <input type='file' id="FileAttach"></td>
</tr>
<tr>
<td>
<button type="submit" id="SubmitFile" onclick="submitForm()" >Submit</button>
</td>
</tr>
</table>
</body>
</html>
<script>
function submitForm(){
var myFile = document.getElementById('FileAttach').files;
var myFolder = document.getElementById('FolderName').value;
var reader = new FileReader();
tempFile = myFile[0];
if(tempFile){
reader.readAsDataURL(tempFile);
reader.onloadend = function(e) {
if (e.target.error != null) {
alert("File " + tempFile.name + " could not be read.");
return;
} else {
google.script.run.withSuccessHandler(finishUpload).uploadFile(myFolder, tempFile.name, e.target.result);
}
};
}
}
function finishUpload(vFileID){
alert("Uploaded File ID is "+vFileID)
}
</script>