This is a Manifests library for Google Apps Scripts.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
images 1st init Nov 9, 2017
.codeclimate.yml 1st init Nov 9, 2017
LICENCE 1st init Nov 9, 2017
ManifestsApp.js Updated to v1.0.3 Jul 11, 2018
README.md Updated to v1.0.3 Jul 11, 2018

README.md

ManifestsApp

MIT License

Overview

This is a Manifests library for Google Apps Scripts. This library can be used for the projects of both standalone script type and container-bound script type.

Demo

In this demonstration, all scripts in a project are retrieved using getProjectBlob().

Description

By recent update of Google, Manifests was added to Google Apps Script Project. At the moment I saw the detail, I thought that this Manifests will blow a new wind for a lot of GAS developers. So I created this. If this was useful for you, I'm glad.

And also, by recent update of Google, Google Apps Script API was updated. By this, users got to be able to be easily to manage the GAS projects. For this, I created ProjectApp2. This is also reflected to this library.

Library's project key

1g0_wywpigtU_xA01D5IrRuBuDD5unieYl7nVXQR8DM_An0eUnB0NcTcx

How to install

  1. Install ManifestsApp library.
    • Library's project key is 1g0_wywpigtU_xA01D5IrRuBuDD5unieYl7nVXQR8DM_An0eUnB0NcTcx.
  2. Enable Drive API and Apps Script API at API console
    • On script editor
    • Resources -> Cloud Platform project
    • View API console
    • At Getting started, click Enable APIs and get credentials like keys.
    • At left side, click Library.
    • At Search for APIs & services, input Drive API. And click Google Drive API.
    • Click Enable button.
      • If it has already been enabled, please don't turn off.
    • At left side, click Library.
    • At Search for APIs & services, input Apps script. And click Google Apps Script API.
    • Click Enable button.
      • If it has already been enabled, please don't turn off.
  3. Also here https://script.google.com/home/usersettings has to be enabled. Please turn ON.

Installing is done! You can use ManifestsApp.

In the case of an error related to scopes, please check here.

How to enable APIs directly

If you know project ID of the script that you use, you can directly access to the page to enable API using your browser.

  • For Drive API
    • https://console.cloud.google.com/apis/api/drive.googleapis.com/?project=### project ID ###
  • For Apps Script API
    • https://console.cloud.google.com/apis/library/script.googleapis.com/?project=### project ID ###

About scopes

About the install of scopes used at this library, users are not required to install scopes. Because this library can automatically install the required scopes to the project which installed this library. The detail information about this can be seen at here.


Usage

Methods that ManifestsApp has are as follows.

Methods Return Descriptions
getManifestsRaw() Object Retrieve Raw Manifests data.
setManifestsByRaw(manifests) Object Set Manifests by raw data with overwrite.
getTimezone() String Retrieve Timezone.
setTimezone(timeZone) Object Set Timezone with overwrite.
getOauthScopes() String[] Retrieve OauthScopes.
setOauthScopes(oauthScopes) Object Set OauthScopes with overwrite.
getAdvancedServices() Object Retrieve AdvancedServices.
enableAdvancedService(userSymbol, serviceId, version) Object Enable AdvancedServices.
disableAdvancedService(serviceId) Object Disable AdvancedService.
getLibraries() Object Retrieve Libraries.
installLibrary(userSymbol, libraryId, version, developmentMode) Object Install Library.
uninstallLibrary(userSymbol) Object Uninstall Library.
getExceptionLogging() String Retrieve ExceptionLogging.
setExceptionLogging(value) Object Set ExceptionLogging with overwrite.
getWebapp() Object Retrieve Web App information.
setWebapp(access, executeAs) Object Set Web App with overwrite.
getUrlFetchWhitelist() String[] Retrieve UrlFetchWhitelist.
setUrlFetchWhitelist(urlFetchWhitelist) Object Set UrlFetchWhitelist with overwrite.
getGmail() Object Retrieve Gmail.
setGmail(resources) Object Set Gmail with overwrite.
getSheets() Object Retrieve Sheets.
setSheets(resources) Object Set Sheets with overwrite. Ref.

You can also see the documents at the following URL.

https://script.google.com/macros/library/versions/d/1g0_wywpigtU_xA01D5IrRuBuDD5unieYl7nVXQR8DM_An0eUnB0NcTcx

And you can see the detail structure for each parameters at the following URL.

https://developers.google.com/apps-script/concepts/manifests

Samples

When you want to retrieve Manifests as raw data (JSON), you can use scripts like below.

var ma = ManifestsApp.setProjectId(projectId); // Retrieve the instance
var r = ma.getManifestsRaw();
Logger.log(r);

or

var r = ManifestsApp.setProjectId(projectId).getManifestsRaw();
Logger.log(r);

Library used at ManifestsApp

In order to manage Manifests, it is required to access GAS projects. For this, at first, I created ProjectApp. ManifestsApp has already used ProjectApp. So you are not necessary to install ProjectApp.


Q & A

Q1: In the case of an error related to scopes

Please confirm as follows.

Confirmation: 1

  • About the scope
    • When you see the Scopes of project installed this library (On script editor -> File -> Project properties -> Scopes), if there are following scopes, the reason of error is not scopes.
      • https://www.googleapis.com/auth/script.external_request
      • https://www.googleapis.com/auth/script.projects

Confirmation: 2

If you cannot see above scopes at On script editor -> File -> Project properties -> Scopes, please do the following setting.

  • Set scopes at Manifests
    • On script editor
      • View -> Show manifest file
    • Add "oauthScopes" to "appsscript.json". After you installed the library and added the scopes to the default "appsscript.json", it becomes as follows. This timeZone is my current time zone. Of course, you can install the library by directly modifying "appsscript.json".
{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
    "libraries": [{
      "userSymbol": "ManifestsApp",
      "libraryId": "1g0_wywpigtU_xA01D5IrRuBuDD5unieYl7nVXQR8DM_An0eUnB0NcTcx",
      "version": "1",
      "developmentMode": true
    }]
  },
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/script.projects"
  ]
}

Q2: In the case of error "Requested entity was not found."

When you set Manifests using some values, if the following error occurs,

{"error":{"code":404,"message":"Requested entity was not found.","status":"NOT_FOUND"}}

Please confirm the values again. For example, when a library with no existing ID is installed, the error occurs.

Acknowledgements

This application was featured by mhawksey. Thank you so much.

  • The featured page is here

Licence

MIT

Author

Tanaike

If you have any questions and commissions for me, feel free to tell me.

Update History

  • v1.0.0 (November 9, 2017)

    Initial release.

  • v1.0.1 (November 23, 2017)

    • Added error messages.
    • Modified README.md
      • It reported that scopes used at this library can automatically install.
      • The detail information about this can be seen at here.
  • v1.0.2 (January 29, 2018)

    • ProjectApp2 is published, and got to be able to use both standalone script type and container-bound script type.
      • By this, this library also got to be able to be used for the both projects.
    • For this update, please enable Apps Script API.
  • v1.0.3 (July 11, 2018)

    • By Google's update, "sheets" was added to manifests for installing the configuration of Macro. By this, this library was updated.
      • You can see the added methods (getSheets(), setSheets()) at Usage.
      • If you set "sheets", please put the value of "sheets" as the resource like below sample.
        • {"macros": [{"menuName": "QuickRowSum", "functionName": "calculateRowSum"}]}
        • Don't put {"sheets": {"macros": [{"menuName": "QuickRowSum", "functionName": "calculateRowSum"}]}}

TOP