【问题标题】:How to Save a JSON file to Google Drive using Google Apps Script?如何使用 Google Apps 脚本将 JSON 文件保存到 Google Drive?
【发布时间】:2018-10-12 10:26:33
【问题描述】:

我有一个需要来自 JSON 文件的训练数据的神经网络脚本,是否可以使用 Google Apps 脚本将 JSON 文件保存到 Google Drive?

【问题讨论】:

    标签: json file google-apps-script


    【解决方案1】:

    您可以使用高级驱动器服务。在 Google Drive 中创建文件有 3 个选项。

    • DriveApp - 内置应用脚本服务
    • 高级驱动服务 - 特定于 Apps 脚本 - 必须添加。
    • Drive API - 必须使用 REST API 选项

    目前,Apps Script 既有旧版代码编辑器,也有新版代码编辑器。在两个编辑器中启用高级驱动器服务是不同的。

    旧版编辑器:

    • “资源”菜单
    • “高级 Google 服务”
    • 在列表中找到“Drive API”
    • 点击按钮开启

    新编辑器:

    • 点击左侧边栏中的“服务”
    • 在列表中找到“Drive API”,点击
    • 点击“添加”按钮

    过去,您还需要在 Google Cloud Platform 中启用 Drive API。但现在你有两个选择。

    • 使用“默认”Google Cloud 项目 - 您无需在 Google Cloud Platform 中显式启用 Drive API。
    • 创建一个新的“标准”Google Cloud 项目并将其与您的 Apps 脚本项目相关联。您需要在 Google Cloud Platform 中启用 Drive API。

    如果 Apps Script 项目将被公众使用,那么您应该创建一个“标准”Google Cloud 项目,并在 Google Cloud Platform 中启用 Google Drive API。

    代码:

    function saveAsJSON() {
      var blob,file,fileSets,obj;
      
      obj = {//Object literal for testing purposes
        key:"value"
      }
    
    /**
     * Creates a file in the users Google Drive
     */
      
      fileSets = {
        title: 'AAA_Test.json',
        mimeType: 'application/json'
      };
      
      blob = Utilities.newBlob(JSON.stringify(obj), "application/vnd.google-apps.script+json");
      file = Drive.Files.insert(fileSets, blob);
      Logger.log('ID: %s, File size (bytes): %s, type: %s', file.id, file.fileSize, file.mimeType);
    
    }
    

    【讨论】:

    • 你怎么知道是application/vnd.google-apps.script+jsonMimeType 没有这样的定义:developers.google.com/apps-script/reference/base/mime-type
    • 这里是 Google 官方文档的链接,其中包含该 mime 类型:Google Export Mime Types 这不容易找到。
    • 您所写的Drive.Files.insert(filesets, blob);DriveApp.getRootFolder().createFile('AAA_Test.json', JSON.stringify(obj), MimeType.PLAIN_TEXT); 之间是否存在有意义的区别?如果/何时尝试读取文件的内容有区别吗?在我的测试中(乍一看),这些文件在形式和功能上看起来相同,除了一个例外:当单击 GDrive 中的文件时,“详细信息”窗格将显示前者的“类型:未知文件”和“类型:文本”为后者。
    • 除了我在之前的评论中提到的之外,后一种方法将在“详细信息”窗格中提供文本内容的预览。但是,两者之间还有一个有趣的区别:在编写文件时,我的测试表明前者比后者快 35%。但是,写入根目录“我的驱动器”以外的文件夹时仅快 10%。
    • 感谢您发布您的发现。 filesets mimetype 应该是 "text/plain"MimeType.PLAIN_TEXT 例如:fileSets = {title: "AAA_Test.txt", mimeType: "text/plain"};
    猜你喜欢
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2015-07-10
    相关资源
    最近更新 更多