Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何通过Google Apps脚本在MS Graph Api中创建订阅_Google Apps Script_Microsoft Graph Api_Webhooks_Onedrive_Subscription - Fatal编程技术网

Google apps script 如何通过Google Apps脚本在MS Graph Api中创建订阅

Google apps script 如何通过Google Apps脚本在MS Graph Api中创建订阅,google-apps-script,microsoft-graph-api,webhooks,onedrive,subscription,Google Apps Script,Microsoft Graph Api,Webhooks,Onedrive,Subscription,目标:将新文件夹添加到根目录时收到通知 我所做的:我阅读并尝试设置订阅 let url = "https://graph.microsoft.com/v1.0/subscriptions"; let payload = { "changeType": "update", "notificationUrl": `https://script.google.com/macros/d/${ScriptApp.getSc

目标:将新文件夹添加到根目录时收到通知

我所做的:我阅读并尝试设置订阅

let url = "https://graph.microsoft.com/v1.0/subscriptions";
let payload = {
 "changeType": "update",
 "notificationUrl": `https://script.google.com/macros/d/${ScriptApp.getScriptId()}/usercallback`,
 "resource": "me/drive/root",
 "expirationDateTime": "2021-03-31T14:33:45Z"
}
let option = {
 "headers": {
  Authorization: "Bearer " + access_token
 },
 "method": "POST",
 "contentType": "application/json",
 "payload": JSON.stringify(payload),
 "muteHttpExceptions": true
};
let response = URlFetchApp.fetch(url, option);
函数setSubscription()

函数doPost(e)

但我得到一个错误,上面写着“通知端点必须以200 OK响应验证请求。”

我想不出一个问题。我尝试了很多我喜欢的通知URL模式

"notificationUrl": "ScriptApp.getService().getUrl()",
但我得到了相同的错误或错误“响应必须完全匹配validationToken查询参数”

我不确定doPost(e)中的返回是否正确

我的成就:获取用户名、在OneDrive中获取文件(项目)以及获取订阅(当然,没有显示订阅)

问题

  • 是否可以通过谷歌应用程序脚本创建订阅

  • 如果是,有什么问题


  • 有人能帮我吗???

    您是否遵循了中的说明?尽管我不确定在您使用
    https://script.google.com/macros/d/${ScriptApp.getScriptId()}/usercallback
    作为Web应用的URL,
    ScriptApp.getScriptId()的值
    不是部署ID。例如,直接使用Web应用URL中的部署ID如何?顺便说一句,当你重新部署Web应用程序时,请小心,谢谢你的回复,Lamblichus。是的,我读过并试着遵循它,但我不知道如何用“HTTP200OK”、“text/plain”和“validationToken”来响应。正如我前面提到的,我使用了ContentService.createTextOutput()并附加了“200”和“validationToken”并将mimetype设置为text,然后我只返回这个。谢谢你的帮助,Tanaike。我今天要试试!我稍后会再回复@Tanaike我试过了,但当我遇到同样的错误时,“通知端点必须以200 OK响应验证请求”。我认为问题在于doPost(e)函数中的返回。我不确定我返回的是什么。
    "notificationUrl": "ScriptApp.getService().getUrl()",