使用 GAS 发布的网络应用程序作为云端硬盘推送通知的处理程序

2024-04-20

我怎样才能使用云端硬盘的推送通知 API https://developers.google.com/drive/web/push与 GAS Published 应用程序结合使用?

我已经设置了以下所有内容,将通过 GET/POST 接收到的任何内容附加到这张表 https://docs.google.com/spreadsheets/d/1RIxhdCQlZ52-GJG43m4fdMiCLSCtXjK62YxY4M2aXkc/edit#gid=1462425657为了进行测试,并且尝试将 WATCH 添加到已发布的 URL 失败,我收到错误“权限不足”。

即使我无法使用中的授权选项,我也可以使用该应用程序吗?文档 https://support.google.com/webmasters/answer/35179?

链接到下面的脚本文件 https://script.google.com/d/1HlDpr9k9IOw2OyeBU_GiBtuRJg01OCam0CabVd9tXNXlnvWYi2extL4M/edit?usp=drive_web

var sslog = SpreadsheetApp.openById('1RIxhdCQlZ52-GJG43m4fdMiCLSCtXjK62YxY4M2aXkc').getSheets()[0];

function doPost(e) {
 sslog.appendRow([e]);
  return 200;
}

function doGet(e) {
 sslog.appendRow([e]);
  return 200;
}

function addWatch(){
  var PayLoad = {
    "id": "4baa4sd80-6ass-1asd4e2-bs5fd-0asd848c9a77", // Your channel ID.
    "type": "web_hook",
    "address": "https://script.google.com/macros/s/AKfycbwBoiIBIJaAJVWJb5Tboc_Wz0RNDxaD_8raKnnLWO_WllO3Lnfe/exec", // Your receiving URL.
    "expiration": ((new Date()).getTime() + 1000*60*5)// (Optional) Your requested channel expiration time.
  }
  var headers = { 'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(), 'Content-Type': 'application/json' };
  var url = 'https://www.googleapis.com/drive/v2/files/15flCrMJ4ItmPZzVzdfmOFuz44iG7xSIqSV066BW7G-Q/watch';

  var mod = UrlFetchApp.fetch(url, { headers:headers, payload:JSON.stringify(PayLoad), method:'POST' });
}

我尝试过使用Drive.Changes.watch(resource, optionalArgs) 从这里 https://developers.google.com/drive/v2/reference/changes/watch#examples,但不知道使用什么作为资源/参数。


警告:我自己无法让这个工作,这只是令人沮丧,直到我最终找到报告的问题。果然,这不受支持,并且被视为功能请求。 (“哦,你想要一个 APIworks!规范中没有明确说明这一点,所以现在它是一个功能请求。我们很快就会解决这个问题。”)

的无用之处Drive.changes.watch()拼写在问题 4254 https://code.google.com/p/google-apps-script-issues/issues/detail?id=4254:允许 Apps 脚本 Web 应用程序接收并响应(云端硬盘)推送通知。在该问题的评论中,提到这个功能差距在 YouTube 上共享的演示文稿中进行了描述,并在 StackOverflow 上进行了“讨论”使用Google Script的Web App作为Webhook直接接收推送通知 https://stackoverflow.com/questions/25083849/use-google-scripts-web-app-as-webhook-to-receive-push-notification-directly。 (该问答中没有太多实际信息,因为事实证明回答者从未真正尝试过云端硬盘通知 Webhook。)问题报告中的关键评论是#6 https://code.google.com/p/google-apps-script-issues/issues/detail?id=4254#c6,其中 Google 员工“ryanr...”指出不支持 Google Apps 脚本作为(直接)通知接收器。

然而...

如果您有控制的外部服务器,则可以使用它来接收通知,并通过 Google Apps 脚本进行设置。首先,使用脚本中的开发人员控制台启用 Drive API 并设置项目以接收推送通知。这还将引导您完成确认目标域控制权的步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 GAS 发布的网络应用程序作为云端硬盘推送通知的处理程序 的相关文章

随机推荐