Как исправить Google Script / HTML-форму, не отправляющую всех авторизованных редакторов - PullRequest
1 голос
/ 02 июля 2019

Я создаю ротацию, которая имеет три отдельные функции:

-Добавление сотрудника -Изменение информации о персонале -Удаление сотрудника

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

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

Проблема, с которой сталкиваются, имеет две стороны.Для некоторых пользователей все работает нормально.Для некоторых пользователей некоторые сценарии работают, но не все.Для одного пользователя ни один из сценариев не работает.

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

ЯЯ не особо разбираюсь в кодировании, поэтому представьте, что проблема в каком-то сценарии, но я, честно говоря, ошеломлен тем, что он работает в разной степени для разных людей!

Ниже приведен фрагмент кода Google Script и HTML.Я удалил большую часть фактической обработки из .gs, так как проблема, по-видимому, связана с вызовом функции (addForm).

Я попытался поместить все сценарии в один файл в проекте.Я попытался иметь все сценарии, содержащиеся в их собственном файле сценариев в рамках проекта (например, проект имел 1 сценарий для строки меню, затем 1 сценарий для каждой функции и 1 файл HTML для каждой функции - всего 4 сценария и 3HTML-файлы в 1 проекте).Я также попытался убить обоих вариантов.Все безрезультатно.

AddScript.gs:

function addDialogue() {
    var html = HtmlService.createHtmlOutputFromFile('AddHTML')
        .setTitle('Add New Staff')
        .setWidth(500)
    SpreadsheetApp.getUi().showSidebar(html);
}

function addForm(formObject) {
    var parent = SpreadsheetApp.getActiveSheet().getParent();
    var landing = parent.getSheetByName("Landing Page");
    var data = parent.getSheetByName("Data");
    var ui = SpreadsheetApp.getUi();
    var PP = formObject.PP;
    var dept = formObject.dept;
    data.getRange("A20").setValue(PP);
    data.getRange("A21").setValue(dept);
}

AddHTML.html:

<!DOCTYPE html>
<html>
<head>
    <base target="_top">
</head>
<body>
    <font face="courier">
        <form id="AddForm"
            onsubmit="event.preventDefault(); google.script.run.addForm(this); google.script.host.close()">
            <br>
            Starting PP:<br>
            <select name="PP">
                <option value="PP8">PP8</option>
                <option value="PP9">PP9</option>
                <option value="PP10">PP10</option>
                <option value="PP11">PP11</option>
                <option value="PP12">PP12</option>
                <option value="PP13">PP13</option>
                <option value="PP1">PP1</option>
                <option value="PP2">PP2</option>
                <option value="PP3">PP3</option>
                <option value="PP4">PP4</option>
                <option value="PP5">PP5</option>
                <option value="PP6">PP6</option>
                <option value="PP7">PP7</option>
            </select>
            <br><br>
            Department: <br>
            <select name="dept">
                <option value="Manager">Manager</option>
                <option value="Team Leader">Team Leader</option>
                <option value="Post">Post</option>
                <option value="Test">Test</option>
                <option value="Stock Control">Stock Control</option>
            </select>
            <br><br>
            <input type="submit" value="Submit">
            <input type="button" value="Cancel" onclick="google.script.host.close()" />
        </form><br>
    </font>
</body>

</html>

Когда он отправляет, все работает, как задумано.Буду признателен за любой совет.

Обновление: я изменил следующую строку:

var parent = SpreadsheetApp.getActiveSheet().getParent();

на

var parent = SpreadsheetApp.openByID("IDhere");

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

...