Проблема при получении объекта события редактора листов и слайдов в надстройке 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 узнал, что с этим сталкивается больше людей, и поэтому с большей вероятностью это будет замечено быстрее.

Надеюсь, это будет вам полезно!

Другие вопросы по тегам