내 이전 게시물 here의 확장 기능,이 기능은 더 구체적이고 자신의 게시물이어야한다고 생각했습니다.매 시간마다 실행되는 timeBased 애드온 트리거는 어떻게 만듭니 까?
추가 기능에는 트리거에 대한 제한이 있습니다. 하나는 한 시간에 한 번만 실행할 수 있다는 것입니다. 나는 그 일을하는 방법을 알아낼 수 없다.
아래 스크립트를 실행하면 추가 기능으로 실행될 때 "허용되지 않는 작업을 수행하려고 시도했습니다"라는 메시지가 표시됩니다 (). 따라서 아래의 스크립트가 한 시간에 한 번씩 스크립트에 적합한 애드온 방법이 아닌 경우 버그가 무엇인지, 또는 찾았습니까?
ScriptApp.newTrigger('updateDay').timeBased().everyHours(1).create();
나는 스펜서가 제안 인증 검사를 추가하는 시도, 및 설명서
here에 설명했다. 인증을 통과하지만 여전히 동일한 오류가 발생합니다.
function installTrigger(e) {
var addonTitle = 'Lab Scheduler';
var props = PropertiesService.getDocumentProperties();
var authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);
if (authInfo.getAuthorizationStatus() ==
ScriptApp.AuthorizationStatus.REQUIRED) {
var lastAuthEmailDate = props.getProperty('lastAuthEmailDate');
var today = new Date().toDateString();
if (lastAuthEmailDate != today) {
if (MailApp.getRemainingDailyQuota() > 0) {
var html = HtmlService.createTemplateFromFile('AuthorizationEmail');
html.url = authInfo.getAuthorizationUrl();
html.addonTitle = addonTitle;
var message = html.evaluate();
MailApp.sendEmail(Session.getEffectiveUser().getEmail(),
'Authorization Required',
message.getContent(), {
name: addonTitle,
htmlBody: message.getContent()
}
);
}
props.setProperty('lastAuthEmailDate', today);
}
} else {
// Authorization has been granted, so continue to respond to the trigger.
try{
var as = SpreadsheetApp.getActiveSpreadsheet();
var userTriggers = ScriptApp.getUserTriggers(as);
var userTriggerL = userTriggers.length;
if (userTriggers.length == 0){
ScriptApp.newTrigger('updateDay').timeBased().everyHours(1).create();
}
} catch(err){
catchToString_(err);
} // End try catch
}
}
AddOn은 설치 또는 사용 중 하나의 상태 일 수 있습니다. [Google 문서 - 설치 모드] (https://developers.google.com/apps-script/add-ons/lifecycle#installed_versus_enabled) 애드온이 활성화 된 모드에서만 설치되면 ** AuthMode.LIMITED **에서 실행됩니다. 인증 모드. AddOn을 사용하는 사용자는 어떤 상태입니까? –