2013-08-22 1 views
1

Я создаю проверку орфографии с помощью API Документов Google в скрипте приложений (просто скрипт, расширяющий функциональность Google Doc), и я не хочу этого делать услуга доступна пользователям, которые загружают ее как веб-приложение. Проблема заключается в том, что когда я создал свой скрипт (связанный с контейнером) в редакторе скриптов, он доступен только в Документе Google, через который я его создал, то есть если я открою новый документ, я не смогу использовать скрипт.Развертывание скрипта Google Apps, связанного с контейнером, как веб-приложение

Если я «Развертывание как веб-приложение», сделайте его доступным для всех и вставьте данный URL-адрес, я получаю сообщение об ошибке, в котором говорится, что для скрипта требуется функция doGet(), которая отсутствует в моем скрипте.

Как я могу опубликовать свой сценарий как обычное веб-приложение?

ответ

0

Ответ на ваш вопрос: основная функция вашего скрипта (тот, который строит пользовательский интерфейс) должен быть вызван doGet() (это обычная точка входа любого веб-приложения GAS, функция, которую вы неявно вызываете при открытии webapp url) ... но я боюсь, что это не решит вашу проблему ...

Даже если я не знаю, что в вашем скрипте и как вы его написали, я думаю, что это относится к документу в который вы связываете с ним как с «активным документом», и это, вероятно, будет самой важной проблемой, поскольку веб-приложение не имеет прикрепленного к нему документа.

Кроме того, как бы проверка орфографии работала как автономное приложение? не могли бы вы более четко объяснить, что вы хотите сделать?

+0

Конечно! Я хочу создать приложение, которое извлекает одно слово (или больше), а затем отправляет слово (ы) на сервер через XHR (UrlFetchApp), где он проверяется на орфографические ошибки/предсказание слов, а затем возвращается как объект JSON - эта часть уже позаботилась. Вещь, которую я хочу сделать, заключается в том, чтобы заставить скрипт привязываться к какому-либо документу, который просматривает пользователь, и иметь такую ​​же функциональность в Google Документах. Любые идеи? – user2663983

1

Я бы продолжил, создав два сценария: базовая функциональность будет развернута как веб-приложение, а простой скрипт, связанный с контейнером, предложит интерфейс для вызова веб-приложения.

Поскольку Web App не связан с документом вы можете следовать этой схеме:

function doGet(e){ 
    if(e.parameter.docId){ 
     doStuff(DocumentApp.openById(e.parameter.docId)); 
    } 
} 

Теперь при развертывании приложения вы получите ссылку, которая дает вам доступ к функциональным возможностям.

Из контейнера переплете скрипт вы можете добавить некоторый пользовательский интерфейс (например, элемент Anchor в боковой панели), ссылки на веб-приложение с соответствующими параметрами

ScriptApp.getService().getUrl() + "?docId=" + DocumentApp.getActiveDocument().getId() 

или использовать UrlFetchApp, чтобы получить результаты и отображать их в пользовательском интерфейсе.

К сожалению, это не то же самое, что добавлять функции во все ваши документы автоматически, а скорее способ установить только относительно легкий крючок в каждом документе, где вы хотите добавить функциональность, а не полный скрипт. Мне неизвестен какой-либо метод, который может это достичь. Обратите внимание, что когда вы делаете копию документа, копия будет содержать все ее скрипты, чтобы вы могли создать шаблон для документов, которые нуждаются в дополнительных функциях. Это может быть полезно, если вы хотите смешивать и сопоставлять несколько сценариев.

Преимущество моего метода в том, что если вы измените базовую функциональность, это изменение сразу же будет доступно для всех ваших документов, использующих его, без необходимости обновлять их скрипты. С другой стороны, если контейнер-скрипт должен сильно взаимодействовать с пользовательским интерфейсом, он может усложняться и уменьшить полезность его разделения в двух сценариях.