通过Apps Script或下载获取容器绑定的Google Apps Script的JSON



如果你创建了一个非容器绑定的g-apps脚本(即不是gDoc或gSheet的一部分),你可以从gDrive以.json的形式下载它(但不能直接在浏览器中通过链接以.json形式查看),它转换为xlsx或docx,并用zip查看器打开这些文件会显示许多文件(许多是xml类型),但没有一个包含谷歌版本的附加脚本。

  1. 有没有一种方法可以从另一个谷歌应用程序中以.json的形式读取脚本文件剧本可能使用Drive-API或与g-a-a一起使用。DriveApp类?

    1. 有没有办法通过DriveApp下载或阅读容器绑定的脚本(除了在原始gFile中之外,其他脚本通常都不可见)

更新

在Kriggs的基础上,添加了一个Logger.log(link),这对独立脚本非常有效。

集装箱运输怎么样?

对于独立脚本文件:

   exportLinks={
application/vnd.google-apps.script+json=
script.google.com/feeds/download/export?id=[scriptId]&format=json
}

对于绑定到容器的脚本文件,有指向csv、sheet和pdf的链接,但没有脚本json。

 exportLinks= { 
    text/csv=docs.google.com/spreadsheets/export?id=[sheetId]&exportFormat=csv, 
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=
    docs.google.com/spreadsheets/export?id=[sheetId]exportFormat=xlsx, 
    application/pdf=
    docs.google.com/spreadsheets/export?id=[sheetId]&exportFormat=pdf 
    }

更新

在Google工作表中,转到"工具"->"脚本编辑器"->地址栏中的URL看起来像:

    https://script.google.com/macros/d/
[ProjectKey]/edit?uiv=2&mid=[aVeryLongAlphaNum]

这是下载json:

https://script.google.com/feeds/download/export?id=[ProjectKey]

问题是,我们可以使用Drive API查找[ProjectKey]

是否有任何针对DriveApp/Drive-API方法的功能请求,以在您的帐户中查找项目密钥?

是否有一种方法可以测试文件是否有容器绑定脚本?然后问题是,脚本是否包含在文件大小中(这可以很容易地进行测试,但此时询问者还不知道)。

这样的东西可能会起作用,尽管它看起来计算成本很高:

var SizeOfFile = yourFile.getSize();//
var charsInFile = yourFile.getAsString();
var unicodeSizeReference = [];//get bytes per character array
charsInFile.sort()
//find frequency of characters then multiply from unicoseSizeReference.
//there could be other gotchas as well, however this is just testing for feasibility
var SizeOfTextInFile = [/*#of chars in file name and sheetname*/]+[/*#of chars in all sheets*/];
SizeOfTextInFile *= unicodeBytesPerCharacter;//ranges from 1 to 4
var someThreshold = 10;//bytes
var hasScript=0;
if ([SizeOfFile - SizeOfTextInFile] > someThreshold) hasScript=1

是的,您必须通过带有OAuth2的Drive API获取它,我使用了DriveApp来获取fileId,但您也可以修改为使用Drive API。要启用驱动器API,请转到资源->高级谷歌服务,找到驱动器API并打开。

当你用Drive发送get时,你会得到包含属性exportLinks的文件的一个对象,用它来获取带有OAuth2身份验证的URL(ScriptApp.getOAuthToken()),获取的字符串将是一个JSON,它具有带有脚本集合的数组files

function getAppsScriptAsJson( fileName ) {
  var fileDrive = Drive.Files.get( DriveApp.getFilesByName( fileName ).next().getId() );
  var link = JSON.parse(fileDrive)[ 'exportLinks' ][ 'application/vnd.google-apps.script+json' ];
  var fetched = UrlFetchApp.fetch(link, {headers:{'Accept':'application/vnd.google-apps.script+json', "Authorization":'Bearer '+ScriptApp.getOAuthToken()}, method:'get'});
  return JSON.parse(fetched.getContentText());
}

关于集装箱运输:

  1. DriveApp无法按名称获取
  2. 它不会在任何地方显示ID,只显示项目密钥
  3. 驱动器API无法按项目id查找,也无法按DriveApp查找
  4. 无法按名称找到驱动器API
  5. 没有从驱动器API或驱动器应用程序返回的对象引用脚本

我想这几乎是隐姓埋名,怀疑是否有自动取款机。

你总是可以制作一个独立的应用程序,并将其设置为电子表格的库。。。

最新更新