Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
Javascript Google应用程序脚本中的Google驱动器共享对话框_Javascript_Google Apps Script_Google Drive Api - Fatal编程技术网

Javascript Google应用程序脚本中的Google驱动器共享对话框

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模板。

我正在应用程序脚本应用程序中使用Google驱动器共享对话框。该应用程序作为web应用程序部署,并通过doGet()方法访问。该应用程序包含一个按钮,用于使用“谷歌驱动器共享”对话框共享驱动器文件。

当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。