google-sheetsgoogle-apps-scriptweb-applications

App script web change version for each deploy


I created a web app for my google sheet script. I deployed it with version 1 and and it works

Now I want to make on going changes and deploy my changes, Do I need to increase the version for each change I deploy? or can I update on current version?

Also, is there a way to get the current version programmaticaly?


Solution

  • For your situation, I would like to introduce because I had a workaround that I also use.

    For question 1 :

    In generally, when the script of Web Apps was updated, the project version is required to be increased and Web Apps is redeployed with the new version.

    But if you want to deploy Web Apps without increasing the version, as a workaround, you can achieve it by using a library. The flow of for this workaround is as follows.

    1. Create 2 projects.
      • One is the project that Web Apps is deployed.
        • It supposes that this is the project that you are using now.
      • Another project is used as a library. Please create this as a standalone project.
        • Please create a version.
          • On script editor
            • File -> Manage versions...
            • After input description, please click "Save new version".
        • Please copy this script ID. This is used for installing the library.
    2. For the project that Web Apps is deployed.
      • Please install the library project as a library.
        • On script editor
          • Resources -> Libraries...
          • For "Add a library", please input the file ID of library project.
          • Turn on "Development mode".
          • Set the version to the saved version.
          • In this sample, please set "Identifier" to "lib".
      • Please copy and paste the following function. In this project, the script is only this. And please save the project after copy and paste it.
        • function doGet(e) {return lib.main(e)}
      • Please deploy Web Apps as a new version.
      • After this setting, you are not required to modify this project.
    3. For the project which is used as a library.
      • Please copy and paste the following function.
        • function main(e) {return yourfunction(e)}
        • yourfunction(e) is the function in the project that you are using.

    In this workaround, when you want to modify the script, please modify the library project. By this, when the library is updated, the project which deployed Web Apps is automatically updated because "Development mode" is turned on when the library is installed. This update is also reflected to Web Apps. So the script of Web Apps can be updated without increasing the version.

    As a sample, the scripts for both project after making the settings described above are as follows:

    For the project that Web Apps is deployed.

    function doGet(e) {
      return lib.main(e);
    }
    

    For the project which is used as a library.

    function main(e) {
      return yourfunction(e);
    }
    
    function yourfunction(e) {
    
       do something: The script which is run when users accessed to Web Apps.
    
      return something
    }
    

    For question 2 :

    In order to retrieve the current version of the project, you can use Apps Script API. This is also answered by tehhowch. In a recent update, users got to be able to retrieve and create the project versions. By using this, you can achieve this. The required scope is https://www.googleapis.com/auth/script.projects or https://www.googleapis.com/auth/script.projects.readonly.

    The endpoint for retrieving the version list is as follows.
    GET https://script.googleapis.com/v1/projects/### scriptId ###/versions
    
    If you want to create the new version using script, you can use the following endpont.
    POST https://script.googleapis.com/v1/projects/### scriptId ###/versions
    

    Request body is

    {
     "versionNumber": 3,
     "description": "sample description"
    }
    

    References :

    If this was not useful for you, I'm sorry.