vincular una sheets script referencias que otras otra los importrange importar hojas hoja hacer google funcion editar docs datos cómo con compartidos como buscarv archivos aparezcan excel google-apps-script google-spreadsheet google-sheets google-docs xlsx

excel - sheets - referencias a otras hojas y cómo hacer que los datos de una hoja aparezcan en otra



Cómo convertir un archivo de Google Docs a un archivo de Excel(XLSX) (2)

La imagen muestra el código que se actualiza.

La var "xlsFile" no está definida, ¿por qué? ¿Cómo puedo convertir el archivo Googledocs en un archivo Excel con ScriptEditor (GoogleDocs)

function googleOAuth_ (name, scope) { var oAuthConfig = UrlFetchApp.addOAuthService(name); oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken? scope="+scope); oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); oAuthConfig.setConsumerKey(''anonymous''); oAuthConfig.setConsumerSecret(''anonymous''); return {oAuthServiceName:name, oAuthUseToken:"always"}; } function test(){ var id = ''#'' exportToXls(id) } function exportToXls(id){ var mute = {muteHttpExceptions: true }; var name = DriveApp.getFileById(id).getName() var url = ''https://docs.google.com/feeds/''; var doc = UrlFetchApp.fetch(url+''download/spreadsheets/Export?key=''+id+''&exportFormat=xls'', mute).getBlob() var xlsfile = DocsList.createFile(doc).rename(name+''.xlsx'') }


Con la API de Drive, podemos obtener más información sobre los archivos que la que está disponible a través de los métodos de DriveApp. Consulte los datos del archivo , especialmente exportLinks . Esos enlaces contienen la magia que nos permitirá obtener un archivo XLS. (Por diversión, coloque un punto de interrupción después de asignar el file y verifique con qué información tiene que jugar).

Este script utiliza el servicio de unidad avanzado , que debe estar habilitado . Esta versión contiene una versión más completa, con comprobación de errores.

/** * Downloads spreadsheet with given file id as an Excel file. * Uses Advanced Drive Service, which must be enabled. * Throws if error encountered. * * @param {String} fileId File ID of Sheets file on Drive. */ function downloadXLS(fileId) { var file = Drive.Files.get(fileId); var url = file.exportLinks[MimeType.MICROSOFT_EXCEL]; var options = { headers: { Authorization:"Bearer "+ScriptApp.getOAuthToken() }, muteHttpExceptions : true /// Get failure results } var response = UrlFetchApp.fetch(url, options); var status = response.getResponseCode(); var result = response.getContentText(); if (status != 200) { // Get additional error message info, depending on format if (result.toUpperCase().indexOf("<HTML") !== -1) { var message = strip_tags(result); } else if (result.indexOf(''errors'') != -1) { message = JSON.parse(result).error.message; } throw new Error(''Error ('' + status + ") " + message ); } var doc = response.getBlob(); //DocsList.createFile(doc).rename(file.title + ''.xlsx'') // Deprecated DriveApp.createFile(doc).setName(file.title + ''.xlsx''); }


El siguiente código utiliza oAuthConfig, que ahora está en desuso. Utilice la respuesta de Mogsdad en su lugar. La función importXLS usa la API de la unidad y aún funciona.

Encontrarás muchas publicaciones que dicen que esto no es posible y (algunas) otras que dicen que puedes ... ¡y obviamente puedes!

La respuesta de Mogsdad aquí (simultáneamente) trae una solución elegante usando el servicio de manejo, aquí hay otra para que pueda elegir ;-)

Como beneficio adicional, agregué el proceso inverso, si alguna vez lo necesita.

Use una llamada de función similar a la que uso en la función de prueba para que funcione.

function googleOAuth_(name,scope) { var oAuthConfig = UrlFetchApp.addOAuthService(name); oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope); oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); oAuthConfig.setConsumerKey(''anonymous''); oAuthConfig.setConsumerSecret(''anonymous''); return {oAuthServiceName:name, oAuthUseToken:"always"}; } function test(){ var id = ''spreadsheet_ID'' exportToXls(id) } function exportToXls(id){ var name = DriveApp.getFileById(id).getName() var url = ''https://docs.google.com/feeds/''; var doc = UrlFetchApp.fetch(url+''download/spreadsheets/Export?key=''+id+''&exportFormat=xls'', googleOAuth_(''docs'',url)).getBlob() var xlsfile = DocsList.createFile(doc).rename(name+''.xls'') } function importXLS(){ var files = DriveApp.searchFiles(''title contains ".xls"''); while(files.hasNext()){ var xFile = files.next(); var name = xFile.getName(); if (name.indexOf(''.xls'')>-1){ var ID = xFile.getId(); var xBlob = xFile.getBlob(); var newFile = { title : name+''_converted'', key : ID } file = Drive.Files.insert(newFile, xBlob, { convert: true }); } } }