每月将 Google 电子表格中的特定工作表/标签保存到文件夹中

问题描述

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

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

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

感谢您的帮助!

解决方法

答案

我编写了一小段代码来满足您的需求。我假设所有文件都在一个文件夹 (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')
}

参考文献