Sobrescribir un archivo de imagen con Google Apps Script
¿Puedo sobrescribir un archivo de imagen con Google Apps Script? He intentado:
file.setContent(newBlobImage);
file.replace(newBlobImage);
Ninguno de esos trabajos..setContent()
eliminará cualquier dato que haya en el archivo, y parece que tal vez solo escribe el nombre de la variable como texto, o algo así. Estoy asumiendo que ambos.setContent()
y.replace()
están destinados a documentos de texto, y tal vez por eso no funcionan.
Si se tratara de un archivo de texto o una hoja de cálculo, podría borrarlo y luego agregar nuevo contenido.
Puedo tirar la basura al archivo y luego crear uno nuevo, pero prefiero no hacerlo si hay otra forma.
Si escribo un archivo con el mismo nombre, no sobrescribirá el archivo existente, creará otro archivo con el mismo nombre.
La única forma en que he podido tirar basura al archivo es conDocsList
y el único éxito que he tenido al crear un archivo de imagen es conDriveApp
. Entonces tengo que tirar la basura al archivo conDocsList
, luego cree otro archivo conDriveApp
.
Bueno, he descubierto cómo eliminar el archivo sin enviarlo a la papelera, por lo que no necesitaré limpiar la papelera más tarde. losGoogle Drive SDK
dentro de Apps Script tiene unremove
método que no envió el archivo a la papelera, simplemente desapareció.
var myFolder = DriveApp.getFolderById('3Bg2dKau456ySkhNBWB98W5sSTM');
thisFile = myFolder.getFilesByName(myFileName);
while (thisFile.hasNext()) {
var eachFile = thisFile.next();
var idToDLET = eachFile.getId();
Logger.log('idToDLET: ' + idToDLET);
var rtrnFromDLET = Drive.Files.remove(idToDLET);
};
Entonces, estoy combinando elDriveApp
servicio y elDriveAPI
para eliminar el archivo sin enviarlo a la papelera. losDriveAPI
.remove necesita la ID del archivo, pero no tengo la ID del archivo, por lo que el archivo se busca por nombre, luego se recupera la ID del archivo y luego se usa la ID para eliminar el archivo. Entonces, si no puedo encontrar una manera de sobrescribir el archivo, al menos puedo eliminar el archivo antiguo sin que vaya a la papelera.
Acabo de notar que elDriveAPI
el servicio tiene unPatch
y unUpdate
opción.
.patch(resource, fileId, optionalArgs)
Parche de documentación de Google Actualiza los metadatos del archivo.
losresource
arg es probablemente el metadato. losfileId
Se explica por sí mismo. Supongo que eloptionalArgs
Cuáles son los parámetros que siguen la semántica del parche de solicitud HTTP? No lo sé.
Parece que tanto Patch como Update actualizarán los datos. La actualización es unPUT
solicitar que lo hará
borra los datos previamente establecidos si no proporciona parámetros opcionales.
De acuerdo con la documentación. Por lo tanto, es más seguro usar una solicitud de parche porque los parámetros que faltan simplemente se ignoran. Todavía no lo he probado, pero tal vez esta sea la respuesta.
Recibo un error conPatch
así que lo intentaréUpdate
:
.update(resource, fileId, mediaData)
Eso tiene un argumento para mediaData en forma de blob. Y creo que eso es lo que necesito. Pero no estoy seguro de qué demoniosresource
necesidades de parámetros Entonces estoy atrapado allí.