【问题标题】:Divide a spreadsheet in two or more spreadsheets?将电子表格分成两个或更多电子表格?
【发布时间】:2012-10-23 16:12:21
【问题描述】:

如何在 google-apps-script 中将 google 电子表格(大约 100 张)分成两个(或更多)电子表格(每个大约 50 张)?

唉,由于 google 错误(请参阅 https://productforums.google.com/d/topic/docs/H2ZakBguOgk/discussion),我无法复制整个电子表格文件并删除每个电子表格中的一些工作表。

我只能在另一个电子表格上一张一张地复制工作表,如果复制成功,则删除原始工作表。

提前致谢 ;)

【问题讨论】:

  • 菜单选项“文件 > 制作副本...”是否也不起作用?似乎(在您粘贴的链接上)只有下载不适合您。
  • 是的,这两种方法都不起作用:“文件 > 制作副本...”和“文件 > 下载为 / Excel”。如果我尝试从 drive.google.com /More/Download/selected item/excel 中选择文件,同样的事情。在此先感谢 ;)

标签: google-apps-script spreadsheet


【解决方案1】:

这是一个代码 sn-p 应该可以满足您的需求,我没有对其进行测试,因此您可能需要调整一些细节,但总体思路就在那里...

编辑:我进行了测试并进行了更正以使其正常工作...抱歉第一个版本中的错别字

function splitSS() {
var oldFileID = 'original ss Id'
var newFile = DocsList.getFileById(oldFileID).makeCopy()
var newFileID = newFile.getId()
var ss = SpreadsheetApp.openById(newFileID);
Logger.log(ss.getNumSheets())
var todel = parseInt((ss.getNumSheets())/2);
Logger.log(todel)
var tokeep = ss.getNumSheets()-todel
Logger.log(tokeep)
    for (pa=ss.getNumSheets()-1;pa>tokeep;--pa){ 
      ss.setActiveSheet(ss.getSheets()[pa]);
      var delsheet = ss.deleteActiveSheet(); // delete sheets begining with the last one
      Utilities.sleep(400);
    }
var ssold = SpreadsheetApp.openById(oldFileID);
    for (pa=todel;pa>1;--pa){ 
      ssold.setActiveSheet(ssold.getSheets()[pa]);
      var delsheet = ssold.deleteActiveSheet(); // delete sheets begining with the last one
      Utilities.sleep(400);
    }
}

【讨论】:

  • 哇!非常感谢 ! ;) 我刚刚在另一个没有问题的电子表格上尝试过你的建议,然后再对有问题的电子表格进行测试。唉,我不断收到“”我们很抱歉,发生了服务器错误。请稍等,然后重试。 (第 3 行)“。只是一个细节:我希望我是对的,因为我已经修改了你的第二行:var oldfileID = ("0Ajz_.....3NjJ1R0JiOUE") //'your original ss ID'?提前致谢;)
  • 嗨,代码中有一些错误......现在你有一个工作版本。 (我在第二个循环中使用 ss 而不是 ssold 并且在第一个循环中我忘记了 -1
  • 嗨,谢尔盖,非常感谢。 ;) 唉,此刻我不断收到同样的错误。如果你不介意的话,我明天再试一次。我让你知道。再次感谢。 PS:我也在上面回答了Henrique。
  • 如你所愿...我在一个包含 20 张纸的电子表格上进行了测试,没有出现任何错误...祝明天好运 :-)
  • 嗨,Serge,我的 line3 仍然有同样的错误。但是由于您的脚本,我能够在测试电子表格上执行以下操作(没有“下载为 excel”错误)。 function copySS2() { var oldFileID = ("0Ajz...TlE") //'your original ss ID' var newFile = DocsList.getFileById(oldFileID).makeCopy() } 我的文件被完整复制(除非错误来自我的部分,所有的文字和图像都在那里)。 ;) 现在我刚刚完成了测试以测试我的电子表格(有“下载为 excel”错误)。创建新文件后大约 5 分钟。 ;)
猜你喜欢
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 2016-10-06
  • 2014-08-24
  • 1970-01-01
  • 2020-07-20
相关资源
最近更新 更多