He estado luchando para crear informes semanales específicos del sistema de existencias. Entonces, para brindarle una descripción general básica, tengo una hoja maestra desde la que quiero generar informes, activada por un botón de la interfaz de usuario. Sin embargo, el primer paso es crear una carpeta para esa semana para colocar los PDF. Puedo crear la carpeta y puedo generar el PDF en mi carpeta raíz de Google Drive, pero parece que no puedo mover el PDF a ningún lado después de eso. . Intenté usar .moveTo() pero no puedo hacer que funcione. ¿Alguién tiene algún consejo?
function onOpen(e) { SpreadsheetApp.getUi() .createMenu('Physical') .addItem('New folder','newFolder') .addItem('Generate PDF','generatePDF') .addToUi(); } function newFolder(){ var today = new Date(); var week = Utilities.formatDate(today, "Europe/Amsterdam", "w"); //need to find a way to minus 1 for the current week var spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId(); //time to create a new folder var spreadsheetFile = DriveApp.getFileById(spreadsheetId); var folderId = spreadsheetFile.getParents().next().getId(); var parFolder = DriveApp.getFolderById(folderId) var destFolder = parFolder.createFolder('Week ' + week); } function generatePDF(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var speadsheetFile = ss.getId(); var file = DriveApp.getFileById(speadsheetFile); var folderId = file.getParents().next().getId(); var pdf = DriveApp.createFile(ss.getBlob()) pdf.moveTo(folderId); //find way to move file either to destination folder or to parent folder }Descripción
Este tipo de situaciones son difíciles de probar porque las circunstancias son específicas del interrogador OP. Sin embargo, creo que esto funcionará.
Con las propiedades del script de PropertyService, almacene el identificador de carpeta recién creado y luego obtenga ese identificador de las propiedades del script para mover el archivo.
Una nota de precaución, no revisé el caso si la semana cambia y no se crea una nueva carpeta, el pdf irá a la carpeta de la semana anterior.
Con respecto a la creación de un botón y la vinculación de una función al botón, consulte este artículo Botones en Hojas de cálculo de Google
Guion
function newFolder(){ var today = new Date(); var week = Utilities.formatDate(today, "Europe/Amsterdam", "w"); //need to find a way to minus 1 for the current week var spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId(); //time to create a new folder var spreadsheetFile = DriveApp.getFileById(spreadsheetId); var folderId = spreadsheetFile.getParents().next().getId(); var parFolder = DriveApp.getFolderById(folderId); var folderName = 'Week '+week; // check if folder already exists var subFolders = parFolder.getFoldersByName(folderName); var destFolder = null; if( subFolders.hasNext() ) { SpreadsheetApp.getUi().alert("Folder "+folderName+" already exists"); destFolder = subFolders.next(); } else { destFolder = parFolder.createFolder(folderName); } // store folder id to Script Properties var props = PropertiesService.getScriptProperties(); props.setProperty("foldeId",destFolder.getId()); } function generatePDF(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); // get folder id from Script Properties var folderId = PropertiesService.getScriptProperties("folderId"); if( !folderId ) { SpreadsheetApp.getUi().alert("Property folderId not found"); return; } var pdf = DriveApp.createFile(ss.getBlob()) pdf.moveTo(folderId); //find way to move file either to destination folder or to parent folder }Referencia