如何获取"this"的当前实例?文件在谷歌应用程序脚本
How do I get the current instance of "this" file in Google Apps Script?
我试图创建一个对当前DriveApp文件对象的引用(即脚本本身的实际Google Drive容器)。下面是我要做的:
// 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字符串的脚本文件。这样,如果我复制了Google Apps Script项目,我就不需要在代码中编辑任何东西。gs或脚本属性。有什么建议吗?
Apps Script可以是独立的,也可以有4个容器之一(现在):Google Sheets, Docs, Forms和Sites。如果你事先知道容器的类型,那么很容易得到它的id
。例如
var id = SpreadsheetApp.getActiveSpreadsheet().getId();
var id = DocumentApp.getActiveDocument().getId();
var id = FormApp.getActiveForm().getId();
var id = SitesApp.getActiveSite().getId();
如果你不知道容器类型(这会很奇怪),你可以把它们包装在各种try-catch
中,并找出
假设它不是一个谷歌网站,那么你可以安全地得到这个id,并使用它来检索容器的DriveApp
文件表示。
var file = DriveApp.getFileById(id);
但是这个file
只是DriveApp
API的一个对象,它不是真正的一个this
引用,就像在编程意义上一样。您可以很容易地使用DocsList
或高级Drive
服务来检索同一容器的不同表示。
最后,我不知道如何动态地抓取独立脚本的id(从自身内部)。我怀疑这是不可能的。但我也看不出这有什么用。——edit如果你只想复制,为什么不直接抓取一个"固定"的源脚本呢?
如果你点击你的Apps Script文件,打开右边的详细信息窗口,查看Apps Script的文件详细信息,你会看到一个type属性。将鼠标悬停在"Google Apps Script"字样上,应该会显示:
应用程序/vnd.google-apps-script
我想你可以搜索文件的类型。searchFiles(params)
Google Documentation - searchFiles()方法
也看到:
搜索参数
我想你应该按时间类型搜索:
mimeType = 'application/vnd.google-apps-script'
所以,你可以找到所有的Apps Script文件,在用户驱动器中,然后如果你可以在Apps Script文件上设置一个唯一的属性,你也可以搜索那个。
或按包含文件描述的fullText
搜索,并在文件中放置唯一的描述。这样,您将确保找到您创建的应用程序脚本文件。然后,一旦搜索找到了文件,您就有了您的参考。
- ES6构造函数返回基类的实例
- KnockoutJS-组件-多个实例
- 铬:“;未捕获的语法错误:意外的标记:"
- 为什么无法在TypeScript中导出类实例
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- fluxxor向一个flux实例添加一组以上的操作
- 使用jQuery获取Dropzone实例/对象
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "实例范围”;TypeScript类的getter/setter
- jQuery"焦点”;在一个实例中有效,但在其他实例中无效
- "Cookies的这个实例“;在nodejs cookie中间件的源代码中
- 通过“;类“"实例”;使用ReactJS组件代替“props”文字
- "这个“;javascript中的关键字(作为实例)
- 媒体上传" uploing& quot;同一映像的多个实例
- 无法实例化猫鼬架构:"对象不是函数
- 为什么我的javascript Backbone.js模型共享相同的"实例“;他们的父类