Correcció d'errors #REF a Fulls de càlcul de Google

Correcció d'errors #REF a Fulls de càlcul de Google
Google Apps Script

Entendre els problemes dels fitxers adjunts de Google Sheets

Quan es treballa amb Google Sheets, una tasca habitual és enviar dades del full com a fitxers adjunts d'Excel per correu electrònic. Aquest procés es pot racionalitzar mitjançant Google Apps Script, que permet als usuaris enviar diversos fulls en un sol correu electrònic. Tanmateix, poden sorgir problemes, com ara l'error #REF, que normalment indica un problema de referència a les dades que s'exporten.

Aquest problema sovint es manifesta quan Google Sheets utilitza fórmules complexes com QUERY(), que no es tradueixen bé quan els fulls es converteixen al format Excel. L'error altera la integritat de les dades del fitxer adjunt, la qual cosa suposa un repte important per als usuaris que confien en aquestes exportacions per a l'informe o l'anàlisi.

Comandament Descripció
SpreadsheetApp.getActiveSpreadsheet() Obté el full de càlcul actiu al qual està vinculat l'script.
spreadSheet.getSheetByName(sheet).getSheetId() Retorna l'identificador únic d'un full dins del full de càlcul.
UrlFetchApp.fetch(url, params) Fa una sol·licitud a un URL especificat utilitzant diversos paràmetres per gestionar la sol·licitud HTTP.
Utilities.sleep(milliseconds) Atura l'execució de l'script durant un nombre especificat de mil·lisegons per evitar que arribi als límits de velocitat de l'API.
ScriptApp.getOAuthToken() Recupera el testimoni OAuth 2.0 perquè l'usuari actual autentiqui les sol·licituds.
getBlob() Obté les dades d'un fitxer obtingut d'un URL com a blob, que s'utilitza per adjuntar fitxers als correus electrònics.

Explicació de la funcionalitat del guió

L'script proporcionat està dissenyat per automatitzar el procés d'enviament de diversos fulls de Google com a fitxers adjunts d'Excel en un sol correu electrònic. Comença declarant una matriu de noms de fulls destinats a l'exportació. L'script recupera el full de càlcul actiu i itera a través de la matriu de noms de fulls per generar URL de descàrrega per a cada full. Aquests URL tenen un format específic per exportar els fulls com a fitxers Excel. L'ús de "Utilities.sleep(10000);" Aquí és crucial introduir un retard entre les sol·licituds de recuperació, ajudant a gestionar la càrrega als servidors de Google i evitar que l'script arribi als límits de velocitat.

Cada URL obté el full corresponent com a blob, que després s'anomena segons la matriu de noms de fitxer predefinida. Aquest pas és fonamental perquè converteix les dades dels fulls en un format adequat per a fitxers adjunts de correu electrònic. Després de preparar tots els blobs de fitxers, l'script construeix un objecte de correu electrònic amb destinataris designats, una línia d'assumpte i un missatge de cos. Els blobs s'adjunten a aquest correu electrònic, que després s'envia mitjançant "MailApp.sendEmail(message);" comandament. Aquesta funció forma part del servei MailApp de Google Apps Script, que permet als scripts enviar correus electrònics, invitacions i notificacions.

Resolució d'errors de #REF de Fulls de Google a l'exportació

Solució de Google Apps Script

function sendExcelAttachmentsInOneEmail() {
  var sheets = ['OH INV - B2B', 'OH INV - Acc', 'OH INV - B2C', 'B2B', 'ACC', 'B2C'];
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var spreadSheetId = spreadSheet.getId();
  var urls = sheets.map(sheet => {
    var sheetId = spreadSheet.getSheetByName(sheet).getSheetId();
    return \`https://docs.google.com/spreadsheets/d/${spreadSheetId}/export?format=xlsx&gid=${sheetId}\`;
  });
  var reportName = spreadSheet.getSheetByName('IMEIS').getRange(1, 14).getValue();
  var params = {
    method: 'GET',
    headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()},
    muteHttpExceptions: true
  };
  var fileNames = ['OH INV - B2B.xlsx', 'OH INV - Acc.xlsx', 'OH INV - B2C.xlsx', 'B2B.xlsx', 'ACC.xlsx', 'B2C.xlsx'];
  var blobs = urls.map((url, index) => {
    Utilities.sleep(10000);  // Delay added to avoid hitting rate limits
    var response = UrlFetchApp.fetch(url, params);
    return response.getBlob().setName(fileNames[index]);
  });
  var message = {
    to: 'email@domain.com',
    cc: 'email@domain.com',
    subject: 'Combined REPORTS - ' + reportName,
    body: "Hi Team,\n\nPlease find attached Reports.\n\nBest Regards!",
    attachments: blobs
  }
  MailApp.sendEmail(message);
}

Estadístiques avançades sobre problemes d'exportació de fulls de càlcul de Google

L'exportació de dades de Google Sheets a formats d'Excel mitjançant scripts pot exposar complexitats subjacents a la gestió de dades, especialment quan s'utilitzen funcions avançades com QUERY(). L'error #REF que es troba en aquestes exportacions normalment indica referències no resoltes dins de l'entorn d'Excel, que no es produeixen a Google Sheets. Aquesta disparitat sovint sorgeix perquè algunes de les funcionalitats de Google Sheets, com algunes operacions QUERY() o scripts personalitzats, no són compatibles o es comporten de manera diferent a Excel.

Aquest problema subratlla la importància de garantir la compatibilitat entre les fórmules de Google Sheets i el maneig de fórmules i consultes de dades per part d'Excel. Sovint, els desenvolupadors han d'implementar comprovacions addicionals o mètodes alternatius per garantir la integritat de les dades quan passen de l'entorn de Google a l'entorn de Microsoft, especialment quan s'automatitza processos com ara els fitxers adjunts de dades del full de càlcul per correu electrònic.

Consultes habituals a Google Sheets Scripting

  1. Pregunta: Per què apareix l'error #REF en exportar de Fulls de càlcul de Google a Excel?
  2. Resposta: L'error #REF sol produir-se perquè determinades referències o fórmules de Google Sheets no es reconeixen o són incompatibles amb l'entorn de fórmules d'Excel.
  3. Pregunta: Com puc evitar arribar als límits de velocitat amb Google Apps Scripts?
  4. Resposta: La implementació de pauses a l'script mitjançant Utilities.sleep (mil·lisegons) pot ajudar a gestionar la freqüència de les sol·licituds i evitar superar els límits de velocitat de Google.
  5. Pregunta: Què fa muteHttpExceptions en una trucada d'obtenció d'URL?
  6. Resposta: Permet que l'script continuï amb l'execució sense llançar una excepció si la sol·licitud HTTP falla, útil per gestionar els errors amb gràcia.
  7. Pregunta: Puc personalitzar el nom del fitxer de cada full quan exporto a Excel?
  8. Resposta: Sí, podeu establir noms personalitzats per a cada blob convertit del full abans d'adjuntar-los a un correu electrònic, tal com es mostra a l'script.
  9. Pregunta: Hi ha alguna manera d'exportar directament Google Sheets a Excel sense scripts intermedis?
  10. Resposta: Sí, podeu descarregar manualment un full de càlcul de Google en format Excel directament des del menú Fitxer de Fulls de càlcul de Google, però per automatitzar-ho requereix scripts.

Informació final sobre els reptes de l'exportació de fulls

Amb aquesta exploració, es fa evident que, si bé Google Apps Script proporciona eines potents per automatitzar i millorar les funcionalitats de Google Sheets, sorgeixen certes complexitats quan s'interfaça amb diferents plataformes com Excel. Els errors #REF són un error comú, especialment quan es tracten consultes complexes i referències de dades que no es tradueixen bé fora de l'ecosistema de Google. Comprendre aquestes limitacions i planificar-les en scripts pot reduir significativament l'aparició d'aquests problemes, donant lloc a processos de gestió de dades més fluids.