Проблема при получении объекта события редактора листов и слайдов в надстройке Google Workspace
Я делаю надстройку Google Workspace, в которой хочу получить объект листа, например
"sheets": {
"addonHasFileScopePermission": true,
"id":"A_24Q3CDA23112312ED52",
"title":"How to get started with Sheets"
},
Но я не получаю объект листов, когда пытаюсь использовать его с документами. Я могу получить объект как:
"docs": {
"addonHasFileScopePermission": true,
"id":"A_24Q3CDA23112312ED52sdsff",
"title":"How to get started with Docs"
},
Вот мой файл манифеста надстройки
{
"exceptionLogging": "STACKDRIVER",
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.locale",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/drive.file",
"https://www.googleapis.com/auth/drive.addons.metadata.readonly"
],
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Add_on",
"logoUrl": "{my logo url}",
"layoutProperties": {
"primaryColor": "#2772ed"
},
"useLocaleFromApp": true,
"homepageTrigger": {
"runFunction": "onDriveHomePageOpen"
},
},
"drive": {
"homepageTrigger": {
"runFunction": "onDriveHomePageOpen",
"enabled": true
},
"onItemsSelectedTrigger": {
"runFunction": "onDriveItemsSelected"
}
},
"docs": {
"homepageTrigger": {
"runFunction": "onDocsHomepage"
},
"onFileScopeGrantedTrigger": {
"runFunction": "onFileScopeGrantedEditors"
}
},
"sheets": {
"homepageTrigger": {
"runFunction": "onSheetsHomepage"
},
"onFileScopeGrantedTrigger": {
"runFunction": "onFileScopeGrantedEditors"
}
},
"slides": {
"homepageTrigger": {
"runFunction": "onSlidesHomepage"
},
"onFileScopeGrantedTrigger": {
"runFunction": "onFileScopeGrantedEditors"
}
}
}
}
И пример кода, как показано ниже:
function onDocsHomepage(e) {
console.info(e);
return createAddOnView(e);
}
function onSheetsHomepage(e) {
console.info(e);
return createAddOnView(e);
}
function onSlidesHomepage(e) {
console.info(e);
return createAddOnView(e);
}
function createAddOnView(e) {
var docsEventObject;
if(e['hostApp'] == 'docs'){
docsEventObject = e['docs'];
}
if(e['hostApp'] == 'sheets'){
docsEventObject = e['sheets'];
}
if(e['hostApp'] == 'slides'){
docsEventObject = e['slides'];
}
var builder = CardService.newCardBuilder();
var cardSection = CardService.newCardSection();
if (docsEventObject!=null && docsEventObject['addonHasFileScopePermission']!=null) {
cardSection.setHeader(docsEventObject['title']);
// This add-on uses the recommended, limited-permission `drive.file`
// scope to get granular per-file access permissions.
// See: https://developers.google.com/drive/api/v2/about-auth
// If the add-on has access permission, read and display its quota.
cardSection.addWidget(
CardService.newTextParagraph().setText("File Id: " + docsEventObject['id']));
} else {
// If the add-on does not have access permission, add a button that
// allows the user to provide that permission on a per-file basis.
cardSection.addWidget(
CardService.newTextParagraph()
.setText( "The add-on needs permission to access this file." ));
var buttonAction = CardService.newAction()
.setFunctionName("onRequestFileScopeButtonClicked");
var button = CardService.newTextButton()
.setText("Request permission")
.setOnClickAction(buttonAction);
cardSection.addWidget(button);
}
return builder.addSection(cardSection).build();
}
function onRequestFileScopeButtonClicked(e) {
return CardService.newEditorFileScopeActionResponseBuilder()
.requestFileScopeForActiveDocument().build();
}
function onFileScopeGrantedEditors(e){
console.info("after granting item");
console.info(e);
return createAddOnView(e);
}
В приведенном выше коде я могу получить только объект docs и не могу получить объекты листов и слайдов после ограничения доступа к файлам в надстройке.
Согласно документации, вот образец объекта события Editor (для листов): https://developers.google.com/workspace/add-ons/editors/gsao/building-editor-interfaces#event_objects и пример кода доступа к файлу запроса. для текущего документа: https://developers.google.com/workspace/add-ons/editors/gsao/editor-actions#request_file_access_for_current_document
В чем проблема? почему я не получаю объекты для листов и слайдов? Только данный пример работает для документов, а не для листов и слайдов.
1 ответ
Похоже, это ошибка!
Я взял на себя смелость сообщить вам об этом в системе отслеживания проблем Google, подробно описав поведение:
Вы можете нажать ☆ рядом с номером проблемы в левом верхнем углу страницы, чтобы Google узнал, что с этим сталкивается больше людей, и поэтому с большей вероятностью это будет замечено быстрее.
Надеюсь, это будет вам полезно!