我正在使用Apps脚本应用程序中的Google云端硬盘共享对话框。该应用程序部署为Web应用程序,并通过doGet()方法访问。该应用程序包含一个按钮,用于使用Google云端硬盘共享对话框共享云端硬盘文件。
当doGet()请求中没有参数值时,Google云端硬盘共享对话框将按预期工作。但是,当文件ID作为参数传递给doGet()方法并单击共享按钮时,Google云端硬盘共享对话框将返回错误:来源“https://xxxxxxxx-script.googleusercontent.com”不允许应用程序ID“XXXXXXXXXX”。
我正在使用HTML服务来评估参数值并将字符串数组返回给HTML模板。我可以看到文件ID包含在驱动器共享对话框功能的请求中。为什么它会在没有参数值的情况下按预期工作,但在评估参数值时抛出Origin not allowed错误?我甚至尝试将Origin URL添加到Developer's Console中的受信任java脚本源列表中,但仍然收到相同的错误。
我正在尝试使用Google Drive UI集成将文件ID从Drive传递到我的Apps Script Web应用程序。在加载驱动器共享库之后,通过客户端javascript调用shareResult()函数。
function doGet(e){
var html = HtmlService.createTemplateFromFile('htmlfile');
var ids = e.parameters.ids;
html.folderIds = ids;
return html.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function shareResult(){
var idList = folderIds.split(",");
s = new gapi.drive.share.ShareClient(PROJECT_ID);
s.setOAuthToken(oauthtoken);
s.setItemIds(idList);
s.showSettingsDialog();
}
答案 0 :(得分:1)
你确定'oauthtoken'确实已经确定了吗?你应该调试它。我打赌'oauthtoken'实际上是空的或不正确的。您也不应该使用PROJECT_ID实例化ShareClient。试试这个:
var idList = folderIds.split(",");
s = new gapi.drive.share.ShareClient();
s.setOAuthToken(ScriptApp.getOAuthToken());
s.setItemIds(idList);
s.showSettingsDialog();
答案 1 :(得分:0)
e
和doGet(e)
中的doPost(e)
参数是事件参数的对象表示,其中包含有关任何URL参数的信息。有关这些参数的更多信息,请参阅文档的URL Parameters部分。
您必须找到一种方法来获取fileId
对象上的e
(最有可能位于e.parameters
对象中)。完成后,根据Drive API的Add the dialog script,您必须将其放入数组中,并在创建ShareClient
时将其传递。