2014-09-07 4 views
2

Я создаю скрипт, который берет информацию из формы и записывает ее в календарь. Когда я запускаю скрипт в редакторе скриптов, он отлично работает, берет информацию из электронной таблицы и создает событие календаря. Однако, когда я заполняю форму и отправляю (submit - это триггер), я получаю сообщение об ошибке: у меня нет разрешения на вызов getActiveForm(). У меня есть как форма, так и календарь. Я ценю любые идеи.Ошибка скрипта приложения Google App: у вас нет разрешения на вызов getActiveForm?

Код

function createEvent() { 
    var calendarToUse = "testing"; 
    var ssUrlToUse ='https://docs.google.com/a/bay.k12.fl.us/spreadsheets 
/d/1ZTDQL9G5U7RqbbKQbAfb3ERqFwpSsC3EOQxdD1zdQwA/edit#gid=441997215'; 

    /* Get Canalnder*/ 
    var calen = CalendarApp.getCalendarsByName(calendarToUse); 
    var cal = calen[0]; 
    Logger.log(cal.getName()); 

    /* get info from responses*/ 

var mySS 
=SpreadsheetApp.openByUrl(ssUrlToUse).getActiveSheet() 
    Logger.log(mySS.getName()); 
    var values = mySS.getDataRange().getValues(); 
    var response = values[values.length-1]; 
    var i=2; 
    var desc = response[i]; 
    var loc = response[i+1]; 
    var start = makeGreatDate(response[i+2], response[i+4]); 
    var end = makeGreatDate(response[i+3],response[i+6]); 
    var title = response[i+5]; 

    /* populate calendar event*/ 
    var event = cal.createEvent(title, start, end, { 
     description : desc, 
     location : loc 
     }); 


}; 

function makeGreatDate(date, time) { 
    var day = new Date(date); 
    day.setHours(time.getHours()); 
    day.setMinutes(time.getMinutes()); 
    Logger.log("The Date is"+ day); 
    return day; 
} 
+0

Ваш образец кода не включает вызов 'getActiveForm()', пожалуйста, обновите его. – Mogsdad

ответ

5

Я бегу в том же номере. Мой скрипт просто принял форму ответа и форматы в электронное письмо. Подобно OP, я не делаю ни одного вызова FormApp.getActiveForm() в любом месте моего скрипта.

Эта проблема разрешена сразу же после того, как я добавил вызов PropertiesService.getScriptProperties().

Хотя это не полноценное решение, я смог обойти это, добавив строку только для FormApp.getActiveForm(), сохраняя, а затем сохраняя триггеры (чтобы снова проверить разрешения). Меня попросили подтвердить Offline Access разрешения для скрипта.

Затем я удалил ненужную линию, и форма работала нормально.

+1

Спасибо за подсказку! Как-то мой скрипт потерял это конкретное разрешение, но добавил вызов 'FormApp.getActiveForm()', запустив его, чтобы получить приглашение на разрешение, а затем удалив его, исправил мою проблему! – Pam

-1

Очень странно, но ваш сценарий должен иметь разрешение на Google Диск. Вставьте код в скрипт, чтобы приложение будет просить разрешения на него (например, для):

var d = DriveApp.getRootFolder(); 

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

+0

Не работал для меня. – Chris

-1

У меня была такая же проблема на скрипте, который был прикреплен к электронной таблице, но что-то сделал, когда была представлена ​​форма, предоставившая эту таблицу с данными. Я нашел в разделе Ресурсы-> Все триггеры, что у меня есть остаточное уведомление с событием, указанным как «Из формы». Так как сценарий действует в электронной таблице с сообщением о событии «From Form», это вызывает ошибку.

1

Удаление триггера из пользовательского интерфейса и повторное добавление запроса потребовало запроса нового разрешения «автономный доступ». Я удовлетворил это, и это сработало с тех пор.

Смежные вопросы