【问题标题】:Save particular sheet/tab from a Google spreadsheet into a folder every month每月将 Google 电子表格中的特定工作表/标签保存到文件夹中
【发布时间】:2021-04-09 08:46:58
【问题描述】:

我正在尝试将 Google 电子表格中的特定选项卡保存到文件夹中,我需要将其安排在每个月的同一天进行。

(我需要为 20 张不同的工作表执行此操作,以便每个月创建备份。)

我见过类似的脚本转换为 pdf 或 cvs,但在我的情况下,我只需要提取一张表格并将其作为 google 电子表格格式保存在不同的文件夹中。

感谢您的帮助!

【问题讨论】:

    标签: google-sheets automation scheduling


    【解决方案1】:

    回答

    我编写了一小段代码来满足您的需求。我假设所有文件都在一个文件夹中 (originalFilesFolderId),而您想将它们移动到另一个文件夹 (copiedFilesFolderId)。要实现这个目标,您需要使用:

    一步一步

    我已将代码拆分为 4 个函数:

    1. main函数:它从originalFilesFolderId获取所有文件并调用process开始操作。

    2. process:它打开电子表格文件,复制并调用其他两个函数。

    3. deleteSheets:它会删除电子表格中除第一张以外的所有表格。

    4. moveFile:它将复制的文件移动到所需的目的地(copiedFilesFolderId

    代码

    function main() {
      var files = DriveApp.getFolderById('originalFilesFolderId').getFiles()
      while (files.hasNext()) {
        var file = files.next();
        var fileId = file.getId()
        process(fileId)
      }
    }
    
    function process(fileId) {
      try {
        var ss = SpreadsheetApp.openById(fileId)
        var copied = ss.copy("copy of " + ss.getName())
        moveFile(copied)
        deleteSheets(copied)
      }
      catch (err) {
        console.log(err.message)
      }
    }
    
    function deleteSheets(copied) {
      var sheets = copied.getSheets()
      for (var i = 1; i < sheets.length; i++) {
        copied.deleteSheet(sheets[i])
      }
    }
    
    function moveFile(copied) {
      var copiedId = copied.getId()
      var file = DriveApp.getFileById(copiedId)
      file.moveTo('copiedFilesFolderId')
    }
    

    参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2019-08-24
      相关资源
      最近更新 更多