Verwenden Sie die Web-App von Google Script als Webhook, um Push-Benachrichtigungen direkt zu erhalten

Mein Ziel: Änderungen in Google Drive => Push-Benachrichtigung anhttps://script.google.com/a/macros/my-domain/... => App wird zum Handeln gedrängt. Ich möchte keinen mittleren Webhook-Agenten für den Empfang von Benachrichtigungen einrichten. Lassen Sie stattdessen die Web-App (über Google Script) sie empfangen und direkt weiterleiten.

Da die relevante Funktion ziemlich undokumentiert ist (nur hier:https://developers.google.com/drive/web/push), unten ist der Code, den ich versucht habe, aber fehlgeschlagen. 1. Ist oberhalb der Idee machbar? 2. Mein Code doPost (R) scheint keine ordnungsgemäße Benachrichtigung (R-Parameter) zu erhalten. Auf jeden Fall keine Antwort, nachdem ich das Google Drive geändert habe. Irgendein Problem? (Ich habe versucht, den Eingabeparameter R zu protokollieren, um seine tatsächliche Struktur zu sehen und zu entscheiden, ob der Parameter Obj für OAuth mit der normalen Drive App identisch ist, aber vor dem Protokollieren tritt ein Fehler auf.)

function SetWatchByOnce(){
  var Channel = {
    'address': 'https://script.google.com/a/macros/my-domain/.../exec',
    'type': 'web_hook',
    'id': 'my-UUID'
  };

  var Result = Drive.Changes.watch(Channel); 
  ...
}    

function doPost(R) {
  var SysEmail = "My Email";
  MailApp.sendEmail(SysEmail, 'Testing ', 'Successfully to received Push Notification');

  var Response = JSON.parse(R.parameters);
  if (Response.kind == "drive#add") {
    var FileId = Response.fileId;
    MyFile = DriveApp.getFolderById(FileId);
    ...
  }
}


function doGet(e) {
  var HTMLToOutput;  
  var SysEmail = "My Email";

  if (e.parameters.kind) { 
      //I think this part is not needed, since Push Notification by Drive is via Post, not Get. I should use onPost() to receive it. Right?

    } else if (e.parameters.code) { 
      getAndStoreAccessToken(e.parameters.code);
      HTMLToOutput = '<html><h1>App is successfully installed.</h1></html>';

    } else { //we are starting from scratch or resetting
      HTMLToOutput = "<html><h1>Install this App now...!</h1><a href='" + getURLForAuthorization() + "'>click here to start</a></html>";
    }  

    return HtmlService.createHtmlOutput(HTMLToOutput);  
  }


....

Antworten auf die Frage(2)

Ihre Antwort auf die Frage