- Google Apps 脚本可以学习自己的名称吗?或者它的ID?
不是这样的。常见的做法是在脚本中创建一个包含其自己的 ID 的全局常量字符串。通过 ID,您可以获取脚本文件名
var SCRIPT_ID = 'abcdefghijklmnopqrstuvwxyz0123456789'; // Constant
...
var scriptFileName = DriveApp.getFileById(SCRIPT_ID).getName();
相反,如果您有脚本的文件名,则可以使用以下命令获取其 IDDriveApp.getFilesByName(name)
然后打电话getId()
在文件对象上。然而,由于多个文件可以具有相同的名称,因此您需要处理重复的可能性。
注意ScriptApp.getService().getUrl()
将返回null
除非脚本部署为 Web 应用程序,在这种情况下,它将返回 Web 应用程序界面的 URL,而不是脚本文件本身。
- 它可以获取其包含文件夹的 ID 吗?
是的。但是,请务必记住,云端硬盘中的文件可能会放置在多个文件夹中,因此有多个父文件夹。
function getScriptParent() {
var thisScript = DriveApp.getFileById(myId);
var parents = thisScript.getParents();
while (parents.hasNext()) {
var folder = parents.next();
Logger.log(folder.getId());
}
}
- 它可以了解它在文件夹层次结构中的位置吗?
通过查找每个祖先文件夹的父级,可以将文件的路径追溯到根。然而,同样,云端硬盘中的每个文件和文件夹都可以有多个父级,因此查找路径并不简单。如果您只有一个有效的路径,则可以仅采用每个文件/文件夹的第一个父级并向后退一步。如果您想要所有有效路径,那么您可能需要实现 BFS 或 DFS 来查找并记录所有路径。
- 脚本“A”可以获取/设置脚本“B”的属性吗?
没有办法访问脚本属性 https://developers.google.com/apps-script/reference/properties/properties来自另一个脚本的脚本。如果您想在脚本之间发送数据,最好的选择是使用某种外部数据存储,例如通过访问的 SQL 数据库JDBC https://developers.google.com/apps-script/reference/jdbc/jdbc.
- 脚本“A”可以编辑脚本“B”使用的库的任何方面吗?
如果您询问脚本 A 是否可以更改脚本 B 包含的库,那么不,这是不可能的。脚本 B 也无法以编程方式更改它使用的库 - 必须在脚本编辑器界面中进行这些选择。
- 脚本“A”可以发布脚本“B”吗?
No.
- 脚本“A”可以更改脚本“B”的文本吗?
No.
- 脚本“A”可以管理脚本“B”的版本吗?
No.
- 脚本“A”可以对其自身执行 5、6、7 或 8 中的任何操作吗?
大多数情况下不可以——只有 Web 应用程序部署可以通过编程方式进行控制。脚本可以通过以下方式将其自己的部署管理为 Web 应用程序:脚本应用程序服务 https://developers.google.com/apps-script/reference/script/service方法。请参阅ScriptApp.Service.enable(限制) https://developers.google.com/apps-script/reference/script/service#enable(Service.Restriction)方法以获取更多信息。