Google Apps脚本可以学习自己的名字吗?还是它的身份?
可以获取其包含文件夹的ID吗?
可以了解它在文件夹层次结构中的位置吗?
脚本可以" A"获取/设置脚本" B"?
脚本可以" A"编辑脚本" B"?
脚本可以" A"发布脚本" B"?
脚本可以" A"改变脚本的文字" B"?
更新2014/10/03 16:00 EDT
脚本可以" A"管理脚本的版本" B"?
脚本可以" A"自己做5,6,7或8中的任何一个?
答案 0 :(得分:1)
不是这样的。通常的做法是在包含自己的ID的脚本中创建一个全局常量字符串。使用ID,您可以使用
获取脚本文件名var SCRIPT_ID = 'abcdefghijklmnopqrstuvwxyz0123456789'; // Constant
...
var scriptFileName = DriveApp.getFileById(SCRIPT_ID).getName();
相反,如果您拥有脚本的文件名,则可以使用DriveApp.getFilesByName(name)
然后在文件对象上调用getId()
来获取其ID。但是,由于多个文件可以具有相同的名称,因此您需要处理重复的可能性。
请注意ScriptApp.getService().getUrl()
将返回null
,除非脚本部署为Web应用程序,在这种情况下,它将返回Web应用程序界面的URL,而不是脚本文件本身。
是。但是,重要的是要记住Drive中的文件可能放在多个文件夹中,因此有多个父文件。
function getScriptParent() {
var thisScript = DriveApp.getFileById(myId);
var parents = thisScript.getParents();
while (parents.hasNext()) {
var folder = parents.next();
Logger.log(folder.getId());
}
}
通过查找每个祖先文件夹的父项,可以将文件的路径追溯回根目录。但是,同样,Drive中的每个文件和文件夹都可以有多个父项,因此查找路径并不简单。如果您只有一个有效的路径,您可以只取每个文件/文件夹的第一个父级并向后退。如果您想要所有有效路径,那么您可能希望实现BFS或DFS来查找和记录它们。
无法从其他脚本访问脚本的ScriptProperties。如果要在脚本之间发送数据,最好的选择是使用某种外部数据存储,例如通过JDBC访问的SQL数据库。
如果您询问脚本A是否可以更改脚本B包含的库,那么不,这是不可能的。脚本B无法以编程方式更改它使用的库 - 这些选择必须在脚本编辑器界面中进行。
没有
没有
没有
通常不会 - 只能通过编程控制网络应用程序解除。脚本可以通过ScriptApp.Service方法将自己的部署作为Web应用程序进行管理。有关详细信息,请参阅ScriptApp.Service.enable(restriction)方法。
答案 1 :(得分:0)
一些参考文献回答了你的一些(众多)问题:(如果我想到其他答案元素,我会更新)
获取脚本自己的网址:ScriptApp.getService().getUrl()
从另一个脚本中读取Google Apps脚本的内容:Is it possible to read the contents of a Google Apps Script from another Script
ScriptApp.getResource("Code").getDataAsString();
找到当前脚本文件所在文件夹的路径:
function getScriptFolderTree() {
var thisScript = getThisScriptInDrive();
var names = []
var Ids = []
var folder = thisScript.getParents()[0];
while (folder.getName() != "Root"){
names.unshift(folder.getName());
Ids.unshift(folder.getId());
var parents = folder.getParents();
var folder = parents[0];
}
Logger.log('Root/'+names.join().replace(/,/g,'/'))
Ids.unshift(DocsList.getRootFolder().getId())
Logger.log(Ids)
}
function getThisScriptInDrive() {
return DocsList.find("poiuytrezazertyujhgfdsdcvcxyydryfhchfh")[0];
}
Borrowed from this post(Corey G原始回答+我的开发示例)
(待完成......)