Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 如何获取“的当前实例?”;这";谷歌应用程序脚本中的文件?_Javascript_Google Apps Script_Google Drive Api - Fatal编程技术网

Javascript 如何获取“的当前实例?”;这";谷歌应用程序脚本中的文件?

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)

我正在尝试创建对当前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),因为我不想“硬编码”脚本文件的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文档,并试图找到一些创造性的解决方法。我想你是对的。。。这个功能对于谷歌应用程序脚本来说有点太“元”了。我怀疑这是可能的,或者说谷歌会启用它。