Javascript Google应用程序脚本中的Google驱动器共享对话框
我正在应用程序脚本应用程序中使用Google驱动器共享对话框。该应用程序作为web应用程序部署,并通过doGet()方法访问。该应用程序包含一个按钮,用于使用“谷歌驱动器共享”对话框共享驱动器文件。Javascript Google应用程序脚本中的Google驱动器共享对话框,javascript,google-apps-script,google-drive-api,Javascript,Google Apps Script,Google Drive Api,我正在应用程序脚本应用程序中使用Google驱动器共享对话框。该应用程序作为web应用程序部署,并通过doGet()方法访问。该应用程序包含一个按钮,用于使用“谷歌驱动器共享”对话框共享驱动器文件。当doGet()请求中没有参数值时,“谷歌驱动器共享”对话框将按预期工作。但是,当文件Id作为参数传递给doGet()方法,并单击共享按钮时,Google驱动器共享对话框返回错误:应用程序Id“xxxxxxxxx”不允许使用源代码“”我正在使用HTML服务评估参数值,并将字符串数组返回到HTML模板。
当doGet()请求中没有参数值时,“谷歌驱动器共享”对话框将按预期工作。但是,当文件Id作为参数传递给doGet()方法,并单击共享按钮时,Google驱动器共享对话框返回错误:
应用程序Id“xxxxxxxxx”不允许使用源代码“”
我正在使用HTML服务评估参数值,并将字符串数组返回到HTML模板。我可以看到请求驱动器共享对话框功能中包含的文件Id。为什么在没有参数值的情况下它会按预期工作,但在计算参数值时抛出originnotallowed错误?我甚至尝试将源URL添加到开发人员控制台中的可信java脚本源列表中,但仍然收到相同的错误
我正在尝试使用Google Drive UI集成将文件Id从驱动器传递到我的应用程序脚本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();
}
doGet(e)
和doPost(e)
中的e
参数是事件参数的对象表示形式,其中包含有关任何URL参数的信息。有关参数的更多信息,请参阅文档的一节
您必须找到一种方法来获取
e
对象上的fileId
(它很可能位于e.parameters
对象中)。完成后,根据驱动器API的类型,您必须将其放入一个数组中,并在创建ShareClient
时传递它。是否确实设置了“oauthtoken”?你应该调试一下。我打赌'oauthtoken'实际上为null或不正确。您也不应使用项目ID实例化ShareClient。请尝试以下操作:
var idList = folderIds.split(",");
s = new gapi.drive.share.ShareClient();
s.setOAuthToken(ScriptApp.getOAuthToken());
s.setItemIds(idList);
s.showSettingsDialog();
我已经用我用来传递参数和触发ShareClient对话框的代码片段更新了我的问题。调试代码时,我可以在shareResult函数中看到e.parameters.Ids中的文件ID。拆分后是否需要修剪字段?i、 e.可能id上有一个前缀/后缀的空格字符使其无效。是的,我验证了OAuth标记是否有效。当我在没有项目ID的情况下实例化ShareClient时,对话框会显示加载图像一段时间,然后返回一个500错误。当我在idList中硬编码一个文件Id时,这段代码可以工作。它唯一不起作用的时候是通过doGet()计算参数并将其传递给客户端js。