在 Apps 脚本中的 Gmail 加载项中完成请求后获得回调

Getting a callback after a request has been completed in a Gmail Add On in Apps Script

首先,我要做的是完成以下任务。 注意:这不是我的插件。

这个脚本是如何生成的?我找不到任何关于 script.google.com/macros.

的信息

关闭此选项卡后,加载项会收到如下所示的回调:

由于我不了解流程,我的问题是:

  1. 附加脚本如何知道选项卡正在关闭?
  2. 脚本是如何创建的?
  3. 脚本在哪个端点调用 google 附加组件?

以下是我的插件脚本:

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;
}

正如您在最后(此处)看到的那样,我正在尝试将 actionBuilder 与具有 属性 OnClose 的 actionResponse 一起使用,但 OnClose 上的唯一参数是:NOTHING 和 RELOAD。我可以通过某种方式传递一个动作,或者我应该怎么做才能复制我上面提到的场景?

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();

基本上 add-on 所做的是 'sign in workflow' 来授权范围。如果您想复制该工作流程,您可以查看 Google 提供的 this sample

除此之外,您还可以提交 feature request 来控制浏览器事件。

正在寻找我找到的任何替代选项 this and this.

至于使用 Google Apps 脚本的宏,您可以 look here.