Виправлення помилок #REF у Google Таблицях

Виправлення помилок #REF у Google Таблицях
Google Apps Script

Розуміння проблем із вкладеннями Google Таблиць

Під час роботи з Google Таблицями поширеним завданням є надсилання даних аркуша у вигляді вкладень Excel електронною поштою. Цей процес можна оптимізувати за допомогою Google Apps Script, дозволяючи користувачам надсилати кілька аркушів в одному електронному листі. Однак можуть виникнути проблеми, наприклад помилка #REF, яка зазвичай вказує на проблему посилання в даних, що експортуються.

Ця проблема часто виникає, коли Google Таблиці використовують складні формули, такі як QUERY(), які погано перекладаються, коли аркуші конвертуються у формат Excel. Помилка порушує цілісність даних у вкладенні, створюючи серйозну проблему для користувачів, які покладаються на ці експорти для звітування чи аналізу.

Команда опис
SpreadsheetApp.getActiveSpreadsheet() Отримує активну електронну таблицю, до якої прив’язаний сценарій.
spreadSheet.getSheetByName(sheet).getSheetId() Повертає унікальний ідентифікатор аркуша в електронній таблиці.
UrlFetchApp.fetch(url, params) Робить запит до вказаної URL-адреси, використовуючи різні параметри для керування запитом HTTP.
Utilities.sleep(milliseconds) Призупиняє виконання сценарію на певну кількість мілісекунд, щоб запобігти перевищенню обмежень швидкості API.
ScriptApp.getOAuthToken() Отримує маркер OAuth 2.0 для поточного користувача для автентифікації запитів.
getBlob() Отримує дані файлу, отриманого з URL-адреси, як blob, який використовується для вкладення файлів до електронних листів.

Пояснення функціональності сценарію

Наданий сценарій розроблено для автоматизації процесу надсилання кількох таблиць Google у вигляді вкладень Excel в одному електронному листі. Він починається з оголошення масиву імен аркушів, призначених для експорту. Сценарій отримує активну електронну таблицю та перебирає масив імен аркушів, щоб створити URL-адреси завантаження для кожного аркуша. Ці URL-адреси спеціально відформатовано для експорту аркушів як файлів Excel. Використання 'Utilities.sleep(10000);' тут має вирішальне значення для введення затримки між запитами на вибірку, що допомагає керувати навантаженням на сервери Google і запобігає досягненню сценарієм обмежень швидкості.

Кожна URL-адреса отримує відповідний аркуш як blob, якому потім присвоюється ім’я відповідно до попередньо визначеного масиву імен файлів. Цей крок є критичним, оскільки він перетворює дані з аркушів у формат, придатний для вкладень електронної пошти. Після підготовки всіх блоків файлів сценарій створює об’єкт електронної пошти з визначеними одержувачами, темою та основним текстом повідомлення. BLOB-файли додаються до цього електронного листа, який потім надсилається за допомогою «MailApp.sendEmail(message);» команда. Ця функція є частиною служби MailApp Google Apps Script, що дозволяє сценаріям надсилати електронні листи, запрошення та сповіщення.

Виправлення помилок Google Таблиць #REF під час експорту

Рішення 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);
}

Додаткові відомості про проблеми експорту Google Таблиць

Експорт даних із Google Таблиць у формати Excel за допомогою сценаріїв може виявити основні складності в управлінні даними, особливо під час використання розширених функцій, таких як QUERY(). Помилка #REF, яка виникає під час такого експорту, зазвичай вказує на невирішені посилання в середовищі Excel, яких немає в самих Google Таблицях. Ця невідповідність часто виникає через те, що деякі функції Google Таблиць, як-от певні операції QUERY() або спеціальні сценарії, не підтримуються або поводяться по-різному в Excel.

Ця проблема підкреслює важливість забезпечення сумісності між формулами Google Таблиць і обробкою формул і запитів даних у Excel. Розробникам часто доводиться впроваджувати додаткові перевірки або альтернативні методи для забезпечення цілісності даних під час переходу із середовища Google до середовища Microsoft, зокрема під час автоматизації таких процесів, як вкладення даних електронної таблиці до електронної пошти.

Поширені запити про сценарії Google Таблиць

  1. Питання: Чому під час експорту з Google Таблиць до Excel з’являється помилка #REF?
  2. відповідь: Помилка #REF зазвичай виникає через те, що певні посилання чи формули в Google Таблицях не розпізнаються або несумісні з середовищем формул Excel.
  3. Питання: Як я можу запобігти досягненню обмежень частоти за допомогою скриптів Google Apps?
  4. відповідь: Реалізація пауз у сценарії за допомогою Utilities.sleep(milliseconds) може допомогти керувати частотою запитів і уникнути перевищення обмежень швидкості Google.
  5. Питання: Що робить muteHttpExceptions у виклику отримання URL-адреси?
  6. відповідь: Це дозволяє сценарію продовжувати виконання без створення винятку, якщо HTTP-запит не вдається, що корисно для ефективного керування помилками.
  7. Питання: Чи можу я налаштувати назву файлу кожного аркуша під час експорту в Excel?
  8. відповідь: Так, ви можете встановити власні імена для кожної краплі, перетвореної з аркуша, перш ніж вкладати їх до електронного листа, як показано в сценарії.
  9. Питання: Чи є спосіб безпосередньо експортувати Google Таблиці в Excel без проміжних сценаріїв?
  10. відповідь: Так, ви можете вручну завантажити таблицю Google у форматі Excel безпосередньо з меню «Файл» у таблицях Google, але для автоматизації цього потрібен сценарій.

Остаточне уявлення про проблеми експорту аркушів

Завдяки цьому дослідженню стає очевидним, що хоча Google Apps Script надає потужні інструменти для автоматизації та покращення функцій Google Таблиць, певні складності виникають під час взаємодії з різними платформами, такими як Excel. Помилки #REF є поширеною підводним каменем, особливо під час роботи зі складними запитами та посиланнями на дані, які погано перекладаються за межі екосистеми Google. Розуміння цих обмежень і планування їх у сценаріях може значно зменшити виникнення таких проблем, що призведе до плавніших процесів керування даними.