Overwrite an Image File with Google Apps Script

后端 未结 2 817
孤独总比滥情好
孤独总比滥情好 2020-12-10 18:14

Can I overwrite an image file with Google Apps Script? I\'ve tried:

file.setContent(newBlobImage);
file.replace(newBlobImage);

Neither of

相关标签:
2条回答
  • 2020-12-10 18:33

    An image file can be overwritten with Google Apps Script and the DriveAPI using the update() method:

    .update(File resource, String fileId, Blob mediaData)
    

    Where file resource is:

    var myFileName = 'fileName' + '.jpg';
    
    var file = {
      title: myFileName,
      mimeType: 'image/jpeg'
    };
    

    I'm getting the file ID with the DriveApp service, and the Blob is what was uploaded by the user.

    In order to use DriveAPI, you need to add it through the Resources, Advanced Google Services menu. Set the Drive API to ON.

    var allFilesByName,file,myFolder,myVar,theFileID,thisFile;
       //Define var names without assigning a value
    
    file = {
      title: myFileName,
      mimeType: 'image/jpeg'
    };
    
    myFolder = DriveApp.getFolderById('Folder ID');
    
    allFilesByName = myFolder.getFilesByName(myFileName);
    
    while (allFilesByName.hasNext()) {
      thisFile = allFilesByName.next();
      theFileID = thisFile.getId();
      //Logger.log('theFileID: ' + theFileID);
      
      myVar = Drive.Files.update(file, theFileID, uploadedBlob);
    };
    
    0 讨论(0)
  • 2020-12-10 18:40

    Thank you for this track !

    This allowed me to find a solution to my problem : move a bound form after copying and moved his spreadsheet.

    The Drive app advanced service must be activated in the "Resource Script Editor" to run this script.

    function spreadsheetCopy() {
      // Below is the file to be copied with a bound form.
      var fileToCopy = DriveApp.getFileById("file_key"); // key is fileId
      var saveFolder = DriveApp.getFolderById("folder_key"); // key is folderId
      var currentFolder = "";
      ( fileToCopy.getParents().next() ) ? currentFolder = fileToCopy.getParents().next() : currentFolder = DriveApp.getRootFolder();  
      Logger.log(currentFolder)
      var copyFile = fileToCopy.makeCopy(saveFolder),
          copyName = copyFile.getName(); 
      Utilities.sleep(30000);
     moveFormCopy(currentFolder, saveFolder, copyName);
    }
    
    function moveFormCopy(currentFolder, saveFolder, copyName) {  
      var formsInFolder = currentFolder.getFilesByType(MimeType.GOOGLE_FORMS);
      var form, copyForm, copyFormMimeType, copyFormName, copyFormId;
      while ( formsInFolder.hasNext() ) {
        form = formsInFolder.next();
        if ( copyName === form.getName() ) {
          copyForm = form;
          copyFormMimeType = copyForm.getMimeType();
          copyFormName = copyForm.getName();
          copyFormId = copyForm.getId();
          break;
        }
      };  
      var resource = {title: copyName, mimeType: copyFormMimeType};
      Drive.Files.patch(resource, copyFormId, {addParents: saveFolder.getId(), removeParents: currentFolder.getId()})
    }
    
    0 讨论(0)
提交回复
热议问题