Как автоматически запустить Google Apps Script и автоматически обновить страницу Google? - PullRequest
0 голосов
/ 09 сентября 2018

Я новичок в JavaScript и Google Apps Script.

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

Например, если учащийся вводит 58% по 10-му стандарту и нажимает ввод, статус приемлемости автоматически изменится на «Недопустимый» и т. Д. Можно ли сделать программу, которая заставляет Google лист принимать значения автоматически?

Я вставляю код ниже для справки. Скажите, пожалуйста, как мне заставить гугл лист автоматически принимать значения.

function placementMonitoring() {
    var app = SpreadsheetApp;

    //Get current active sheet
    var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
    var someCell = activeSheet.getRange(3, 6).getValue();
    Logger.log(someCell);

    //var newCell=activeSheet.getRange(3,3).setValue(someCell+1)
    for (var i = 3; i <= 59; i++) {
        var someCell1 = activeSheet.getRange(i, 6).getValue();

        //attempt code for DEBARRED
        if (someCell1 == "D") {
            var attempt = 0;
            activeSheet.getRange(i, 7).setValue(attempt);
        } else

            //attempt code for PARTIALY DEBARED 
            if (someCell1 == "PD") {
                attempt = 5;
                activeSheet.getRange(i, 7).setValue(attempt);
            } else

                // attempt code for unplaced students
                if (someCell1 = "UP") {
                    attempt = "NOT APPLICABLE";
                    activeSheet.getRange(i, 7).setValue(attempt);
                }
    }
    for (var i = 3; i <= 59; i++) {
        var someCell2 = activeSheet.getRange(i, 12).getValue();
        var someCell3 = activeSheet.getRange(i, 15).getValue();
        var someCell4 = activeSheet.getRange(i, 18).getValue();
        var someCell5 = activeSheet.getRange(i, 20).getValue();
        var someCell6 = activeSheet.getRange(i, 21).getValue();
        if (someCell2 == 60 && someCell3 == 60 && someCell4 == 60 && someCell5 == 60 &&
            someCell6 == 60) {
            var eligibility = " Eligible";
            activeSheet.getRange(i, 8).setValue(eligibility);
        } else {
            var eligibility = "Not Eligible";
            activeSheet.getRange(i, 8).setValue(eligibility);
        }
    }
}

вот изображение моей таблицы

1 Ответ

0 голосов
/ 09 сентября 2018

Хорошо, так что я сделал, чтобы сделать что-то подобное, - создать новую функцию, в которой есть куча операторов if / else. Затем я создал «Лист данных», который представляет собой не что иное, как лист для хранения необходимых мне данных. Этот скрипт проверяет, имеет ли ячейка B1 значение "Дэрил I." и если это так, то он копирует данные из «Листа данных» на новый лист. Каждый раз, когда данные в ячейке B1 изменяются, автоматически запускается сценарий, связанный с этим «Именем N».

  if (source.getRange('B1').getValue() == "Daryl I.")
      {
        var source_range = source.getRange("B5:N20");
        var target_range = target.getRange("B2:N17");
        target_range.copyTo(source_range);
      }

Вам нужно создать функцию с конкретным именем и определить столбцы и строки, которые вы хотите, чтобы она активно проверяла. ДОЛЖЕН БЫТЬ ИМЕНИ "функция onEdit (e)".

SimpleTriggers

https://developers.google.com/apps-script/guides/triggers/

function onEdit(e) {
  if (
    e.source.getSheetName() == "Inked Not OA'd" &&
    e.range.columnStart == 2 &&
    e.range.columnEnd == 2 &&
    e.range.rowStart >= 1 &&
    e.range.rowEnd <= 1
  ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...