Я только что получил ответ от сотрудника службы поддержки qz:
Трес Финоккиаро, и он сказал:
Ошибка: пропущено имя после.оператор.
Это связано с тем, что Google Apps Script не поддерживает обещания ES6.Polyfill тоже не работает.Вы можете найти точную ошибку, с которой это происходит, вставив содержимое qz-tray.js в редактор.Здесь выдается ошибка:
_qz.security.callCert (). Then (sendCert) .catch (sendCert);
Причина в том, что это первый неконтролируемый вызов ".then", который является RSVP / A + / Promise.Независимо от взлома, кажется, заставить это работать.Но я бы пока не стал тратить время на это ... читайте дальше.
Вторая причина, по которой это не сработает ... Нет поддержки WebSockets в Сценариях Google Apps.Это основной компонент связи между браузером и API печати.
Некоторые люди утверждают, что вместо этого используют форму AJAX от Google (т.е. UrlFetchApp.fetch (...)), но это не то же самое, чтоwebsocket и даже если бы это было так, не существует понятия «localhost», в котором работает websocket.
Третья причина, по которой это не сработает .... Мы поддерживаем соединение по двум URL-адресам: «localhost» и"localhost.qz.io".Оба работают с HTTPS.При попытке извлечь с помощью Google Apps Script происходит следующее:
Ошибка DNS: https://localhost:8181 Неверный запрос: https://localhost.qz.io:8181
Я прочитал сообщения, предлагающие способызапускать Google Apps Script на «сервере» (где бы он ни находился), но тогда проблема подключения к «localhost» становится еще хуже, поскольку серверы Google не будут запускать наше программное обеспечение, и даже если они это сделают, принтеры не будутбыть доступным.
На данный момент я не вижу простого способа решить вашу проблему.Если вы ищете быстрый способ распечатать необработанный контент из Google Sheets, вы, вероятно, могли бы взломать URL, который это делает.Для этого потребуется знание Java, и вам придется форкать исходный код.
Например, вы можете легко открыть ссылку из Sheets, указывающую на = HYPERLINK ("http://localhost:8182"," http://localhost:8182") Вы можете манипулировать URL-адресом, чтобы отправить полезную нагрузку в приложение, содержащее кусок данных base64, таких как имя принтера и некоторые необработанные данные, но все это должно быть написано с нуля.разработчиком Java.
Код будет находиться внутри функции doGet ().
Это не то, что мы добавили бы в базовый продукт, но вы можете запустить экземпляр в IntelliJ ивзломайте его. Наш учебник по компиляции настолько прост, насколько может быть реализован программный проект. https://github.com/qzind/tray/wiki/Compiling
С уважением,
Тем не менее, все комментарии и мнения, а также ваш опыт решения печати сGoogle лист к термопринтеру по-прежнему наиболее подходит, потому что я все еще ищу решение, которое предоставит мне эту услугу.
Спасибо.