我正在开发一个使用html服务的Google应用脚本。我想为用户提供文件选择器,以便他们可以从他们的Google驱动器中选择一个文件。
我见过两种不同的API,Google Picker和Google DocsListDialog。
我无法上班。我完全按照两个文档页面复制了示例代码,但我无法让选择器出现。
Google Picker我尝试在html页面中使用javascript调用。我从文档页面复制了Hello World示例。没有出现。
然后我在脚本本身尝试了DocsListDialog(通过使用google.script按下html中的按钮来调用)。这一次也没有出现 - 尽管示例代码将选择器返回给doGet函数 - 它也返回它。我的doGet返回html,因为我使用的是html服务。
我只是想要将一个简单的文档选择器集成到我的应用程序中。我可以剪切和粘贴然后修改的示例代码非常有用,因为我可以从中找到它。
感谢。
这可能有助于解释我想要做什么,因为有人可能有不同的方法建议。
我是一所学校的老师和一位不成熟的程序员。我们在学校使用谷歌网站和谷歌驱动器。我想在内部网站页面上创建一个应用程序,教师可以使用该应用程序自动复制和共享模板文件。
我知道如何执行此操作的唯一方法是创建一个使用html服务的Google Apps脚本。然后我可以结合使用html和javascript创建一个易于使用的表单来获取教师的信息。我知道如何让脚本获取文件,复制文件,添加查看器或编辑器等等。
现在只有我知道如何让教师识别他们的文件才能输入文件ID。我学校的许多老师并不过分熟悉计算机,我想让这部分更简单,因为解释如何识别和复制网址中的id并不容易。
我看到了一些谷歌文件选择器的引用,如果有一些方法可以让它与我需要的东西一起工作(或者其他一些简单的方法来完成我需要的东西),这似乎是一个很好的方法。< / p>
非常感谢任何有用的建议。
答案 0 :(得分:1)
DocsListDialog显然是uiservices的一部分,而不是html服务。你为什么期望它在那里工作? filepicker也使用不符合caja的库。阅读有关htmlservice和caja的文档。
编辑:使用新的aps脚本iframe模式,您应该能够使用常规的filepicker库。
答案 1 :(得分:0)
您实际上可以在HTML服务中使用它。以下是......
创建一个新的应用脚本项目并在项目中创建以下文件:
Code.gs文件:
function doGet() {
return HtmlService.createTemplateFromFile('index')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
.setTitle('Picker');
}
index.html文件:
<script type="text/javascript">
// Use the Google Loader script to load the google.picker script.
google.setOnLoadCallback(createPicker);
google.load('picker', '1');
// picker info here
function createPicker() {
// Create default view to folders
var view = new google.picker.View(google.picker.ViewId.FOLDERS);
// Use DocsUploadView to upload documents to Google Drive.
var uploadView = new google.picker.DocsUploadView();
var picker = new google.picker.PickerBuilder().
addView(view).
addView(uploadView).
setAppId('YOUR APP ID').
setCallback(pickerCallback).
build();
picker.setVisible(true);
}
// callback implementation.
function pickerCallback(data) {
if (data.action == google.picker.Action.PICKED) {
var fileId = data.docs[0].id;
alert('The user selected: ' + fileId);
}
}
</script>
在pickerCallback(数据)函数中包含apps脚本子例程。