Javascript 如何获取“的当前实例?”;这";谷歌应用程序脚本中的文件?
我正在尝试创建对当前DriveApp文件对象(即脚本本身的实际Google驱动器容器)的引用。以下是我想做的:Javascript 如何获取“的当前实例?”;这";谷歌应用程序脚本中的文件?,javascript,google-apps-script,google-drive-api,Javascript,Google Apps Script,Google Drive Api,我正在尝试创建对当前DriveApp文件对象(即脚本本身的实际Google驱动器容器)的引用。以下是我想做的: // Assume that thisFile is a FileIterator pointing to THIS file. // My question in a nutshell: How do I get thisFile? DriveApp.getFileById( thisFile.getId() ); 我想这样做,而不是DriveApp.getFileById(id)
// Assume that thisFile is a FileIterator pointing to THIS file.
// My question in a nutshell: How do I get thisFile?
DriveApp.getFileById( thisFile.getId() );
我想这样做,而不是DriveApp.getFileById(id),因为我不想“硬编码”脚本文件的id字符串。这样,如果我复制了GoogleApps脚本项目,我就不必编辑Code.gs或脚本属性中的任何内容。有什么建议吗?一个应用程序脚本可以是独立的,也可以有4个容器(现在)中的一个:谷歌表单、文档、表单和网站。如果您事先知道容器的类型,那么很容易获得其
id
。e、 g
var id = SpreadsheetApp.getActiveSpreadsheet().getId();
var id = DocumentApp.getActiveDocument().getId();
var id = FormApp.getActiveForm().getId();
var id = SitesApp.getActiveSite().getId();
如果您不知道容器类型(这会很奇怪),您可以将它们包装在各种中,然后尝试catch
es并找出答案
假设它不是Google站点,那么您可以安全地获取此id并使用它检索容器的DriveApp
表示
var file = DriveApp.getFileById(id);
但是这个文件
只是DriveApp
API的一个对象,它并不是真正的这个
引用,正如编程意义上的那样。您可以轻松地使用DocsList
或高级Drive
服务来检索同一容器的不同表示形式
var file = DriveApp.getFileById(id);
最后,我不知道如何动态地获取独立脚本的id(从其内部)。我怀疑这是不可能的。但我也不认为这有什么用处--编辑如果您只想复制,为什么不直接获取一个“固定”源脚本?如果您单击应用程序脚本文件,打开右侧的详细信息窗口,查看应用程序脚本的文件详细信息,您将看到一个类型属性。将指针悬停在类型的“谷歌应用程序脚本”上,它应该显示: 应用程序/vnd.google应用程序脚本 我想你可以在文件中搜索类型<代码>搜索文件(参数) 另见: 我想您可以按mime类型进行搜索:
mimeType = 'application/vnd.google-apps-script'
因此,您可以在用户驱动器中找到所有应用程序脚本文件,然后如果您可以在应用程序脚本文件上设置唯一属性,您也可以搜索该文件
或者通过包含文件描述的
全文
进行搜索,并在文件中放置唯一的描述。这样,您一定会找到您创建的应用程序脚本文件。然后,搜索找到文件后,您就有了参考。我正在考虑类似的解决方案。不过,OP表示,目标是能够在不编辑任何代码或文件属性的情况下检索文档。我只是浏览了API文档,并试图找到一些创造性的解决方法。我想你是对的。。。这个功能对于谷歌应用程序脚本来说有点太“元”了。我怀疑这是可能的,或者说谷歌会启用它。