【问题标题】:How to make a copy of a single sheet and save it to a folder in google sheets如何制作单个工作表的副本并将其保存到谷歌工作表中的文件夹
【发布时间】:2019-08-28 11:06:38
【问题描述】:

我目前正在解决一个问题,我正在处理大约 20 个不同的工作表。对于每张纸,我都创建了一个按钮,上面写着“导出”,它将单张纸(如果我能弄明白的话)保存到指定的文件夹中。然后我有一个脚本可以清除工作表,使其再次成为新的(效果很好!)。我在我们的啤酒厂使用它来获取罐中啤酒的日期,当罐为空时,数据将被存储以供将来参考。

所以,到目前为止,代码几乎可以按照我的意愿工作,但它将所有工作表保存为一个文件,现在只导出我当前正在查看的工作表。

对此的任何帮助将不胜感激。

我尝试了几个不同的代码,这与我得到的一样接近。

function createCopy() {
  var myValue = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A29").getValue();
  var destinationFolder = DriveApp.getFolderById("<<google drive folder>>");
  DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).makeCopy(myValue,destinationFolder);
}

如果一切顺利,它会将一张纸保存到我的目标文件夹中。

【问题讨论】:

  • 我不清楚为什么这被否决了? Max 清楚地提供了他到目前为止所做的尝试,他的预期结果和实际结果是什么。
  • 感谢您的支持。这是我的第一篇文章,所以我并不完全清楚格式。在花了一上午的时间之后,我非常期待找到解决方案。

标签: javascript google-apps-script google-sheets


【解决方案1】:

我认为没有一种方法(或者更确切地说,我不知道有一种方法)可以只从电子表格中复制一张工作表,除非创建一个新电子表格,将工作表复制到那里并移动该新电子表格在您的文件夹中。使您的代码更长一点,但我相信这应该可以解决问题:

function createCopy() {
  var myValue = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A29").getValue();
  var destinationFolder = DriveApp.getFolderById("<<google drive folder>>");
  var backupSpreadsheetId = SpreadsheetApp.create(myValue).getId();
  var backupSpreadsheet = SpreadsheetApp.openById(backupSpreadsheetId);
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().copyTo(backupSpreadsheet);
  backupSpreadsheet.deleteSheet(backupSpreadsheet.getSheets()[0]);
  var backupFile = DriveApp.getFileById(backupSpreadsheetId)                                                             
  var currentParent = backupFile.getParents().next();
  destinationFolder.addFile(backupFile);
  currentParent.removeFile(backupFile);
}

【讨论】:

  • 史诗!效果很好!非常感谢你。一个巨大的重量从我的肩膀上卸下。多么棒的社区!
猜你喜欢
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
相关资源
最近更新 更多