[英]Google App Script Error: You do not have permission to call getActiveForm?
我正在創建一個腳本,該腳本從表單中獲取信息並將其寫入日歷。 當我在腳本編輯器中運行腳本時,它運行良好,從電子表格中獲取信息並創建日歷事件。 但是,當我填寫表單並提交(提交是觸發器)時,我收到一條錯誤消息,指出我無權調用 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;
}
我遇到了同樣的問題。 我的腳本只是將表單響應和格式轉換為電子郵件。 與 OP 類似,我不會在腳本中的任何地方對FormApp.getActiveForm()
進行一次調用。
在我添加PropertiesService.getScriptProperties()
調用后,此權限問題立即開始。
雖然不是一個成熟的解決方案,但我能夠通過為FormApp.getActiveForm()
添加一行,保存,然后保存我的觸發器(再次檢查權限)來解決這個問題。 我被要求確認腳本的Offline Access
權限。
然后我刪除了不需要的行,表單工作正常。
從 UI 中刪除觸發器並重新添加它會提示它請求新的權限,“離線訪問”。 我同意了這一點,從那時起它就起作用了。
如果您在添加觸發器后更改了代碼,則需要刪除觸發器並重新添加它,這也將
這很奇怪,但您的腳本必須具有 Google Drive 的權限。 在腳本中插入一些代碼,以便應用程序為其請求許可(例如):
var d = DriveApp.getRootFolder();
然后運行腳本,授予權限。 之后,您可以刪除插入的行,除非您將代碼從一種形式復制到另一種形式。
我在附加到電子表格的腳本上遇到了同樣的問題,但是在提交為該電子表格提供數據的表單時做了一些事情。 我在 Resources->All Triggers 下發現我有一個剩余的通知,其中一個事件列為“來自表單”。 由於腳本在電子表格中起作用,具有“來自表單”事件通知導致錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.