Нет явной поддержки скриптов приложений для выполняемых вами функций, чтобы определить источник их вызова. Простой способ «запечь это» для себя, когда это важно, состоит в том, чтобы разделить вашу функциональность на интерфейс и реализацию.
Начиная с HtmlService
, в вашем проекте доступны только «публичные» функции скриптов приложений. Любая «приватная» функция не напрямую , которая может быть вызвана, но все же доступна, если есть открытый метод, который ее вызывает.
Таким образом, если ваш сценарий происхождения был таким:
function onEdit(e) {
if (e) {
doTheThing(e.value);
}
}
function doTheThing(inputVal) {
/** do stuff */
}
и ваш HtmlService
пользовательский интерфейс вызывает doTheThing
напрямую, т. Е. google.script.run.doTheThing(someVar);
, вы можете реализовать это разделение следующим образом:
function onEdit(e) {
if (e) {
actualDoTheThing_(e.value);
}
}
function doTheThing(argFromHtmlService) {
var realArg = < .... >;
actualDoTheThing_(realArg);
}
function actualDoTheThing_(inputVal) {
/** do stuff */
}
и ваш HtmlService
пользовательский интерфейс не нужно будет менять - вы все равно выполните google.script.run.doTheThing(someVar);
. Однако на стороне сервера вы отсоединили реализацию от интерфейса и, таким образом, можете сообщить своей реализации источник вызова.
Если ваше вычисление realArg
также должно быть скрыто от отладки в пользовательском интерфейсе HtmlService
, вы можете вместо этого отправить дополнительный аргумент и проверить его в реализации:
function onEdit(e) {
if (e) {
actualDoTheThing_(e.value);
}
}
function doTheThing(argFromHtmlService) {
actualDoTheThing_(argFromHtmlService, true);
}
function actualDoTheThing_(inputVal, cameFromHtmlService) {
if (cameFromHtmlService === true) {
inputVal = < .... >;
}
/** do stuff */
}