-1

First of all what I am trying to do is accomplish the following. Note: this is not my add-on.

How is this script generated? I cannot find any information about script.google.com/macros.

enter image description here

After this tab is closed, the add-on gets a callback that looks like this:

enter image description here

enter image description here

As I don't understand the flow my questions are:

  1. How does the add-on script know that the tab is being closed?
  2. How is the script created?
  3. At which endpoint does the script call the google add-on?

The following is my add-on script:

function insertDocumentToRMS(e){
   var url = "https://test.signumid.hr/v/1/rms";

  var object = {
    "data" : e.parameters.file.toString()
  }

  var payload = JSON.stringify(object);

  var headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
  };

  var options = {
    "method": "POST",
    "contentType": "application/json",
    "headers": headers,
    "payload": payload,
    "muteHttpExceptions": true
  };
  

  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());
  
  Logger.log(data);

  var url2 = "https://test.signumid.hr/v/1/signer/document/storage/"+ data.recordNumber;

  Logger.log(url2);

  var object2 = {
    "SignatureProvider": "SwisscomAis",
    "SignatureProviderData": {
      "SwisscomRequestData": {
        "mobileNumber": "+41796063855",
        "language": "en",
        "message": "Matej Potpišiii!",
        "jurisdiction": "ZERTES",
        "signatureLevel": "AES"
      }
    },
    "Documents": [
      {
        "SignatureOptions": {
          "Reason": "Reason",
          "Location": "Location",
          "SignerContactInfo": "SignerContactInfo",
          "SignerName": "SignerName"
        },
        "Document": e.parameters.file.toString()
      }
    ]
  }

  var payload2 = JSON.stringify(object2);

  var headers2 = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
  };

  var options2 = {
    "method": "GET",
    "contentType": "application/json",
    "headers": headers2,
    "payload": payload2,
    "muteHttpExceptions": true
  };
  
  var response2 = UrlFetchApp.fetch(url2, options2);
  Logger.log(response2);

let actionSign = CardService.newAction().setFunctionName('test');

var actionResponse = CardService.newActionResponseBuilder()
    .setOpenLink(CardService.newOpenLink()
        .setUrl("https://test.signumid.hr/v/1/signer/document/storage/"+ data.recordNumber)
        .setOpenAs(CardService.OpenAs.OVERLAY)
        .setOnClose(CardService.OnClose.RELOAD))
    .build();
   

  return actionResponse;
}

As you can see at the end (here), I am trying to use an actionBuilder with an actionResponse that has the property OnClose, but the only parameters on OnClose are: NOTHING and RELOAD. Can I pass an action somehow or what am I supposed to do to replicate the scenario that I mentioned above?

var actionResponse = CardService.newActionResponseBuilder()
    .setOpenLink(CardService.newOpenLink()
        .setUrl("https://test.signumid.hr/v/1/signer/document/storage/"+ data.recordNumber)
        .setOpenAs(CardService.OpenAs.OVERLAY)
        .setOnClose(CardService.OnClose.RELOAD))
    .build();
Yancy Godoy
  • 582
  • 2
  • 13
Wet_Pantz
  • 237
  • 1
  • 5
  • 19

1 Answers1

2

Basically what the add-on is doing is a 'sign in workflow' to authorize scopes. If you want to replicate that workflow you can take a look at this sample provided by Google.

Aside from that you can submit a feature request to control browser events.

Looking for any alternative options I found this and this.

As for macros using Google Apps Script, you can look here.

Yancy Godoy
  • 582
  • 2
  • 13