Google Apps脚本复制文件

时间:2017-07-14 05:11:26

标签: file google-apps-script duplicates

我只是想复制一个打开的工作表文件。我尝试了很多变化而没有成功。以下是一个例子。会重视任何援助。谢谢。

function copyDocs() {
    var file = DriveApp.getFilesByName('My Income Statement');
    file.makeCopy();
}

1 个答案:

答案 0 :(得分:2)

使用DriveApp.getFilesByName()检索的数据为FileIterator。在这种情况下,使用next()检索文件。

示例脚本有两种模式。

示例脚本1

模式1:

如果文件名只是云端硬盘中的文件名,则可以使用以下示例脚本。此示例使用文件名复制文件。

function copyDocs() {
  var file = DriveApp.getFilesByName('My Income Statement').next();
  file.makeCopy();
}

模式2:

如果存在具有相同文件名的文件并且您要复制其中一个文件,则可以使用以下示例脚本。此示例使用fileID复制文件。可以按如下方式检索fileID。

对于文件,

https://docs.google.com/document/d/### File ID ###/edit

对于电子表格,

https://docs.google.com/spreadsheets/d/### File ID ###/edit

示例脚本:

function copyDocs() {
  var file = DriveApp.getFileById("### File ID ###");
  file.makeCopy();
}

示例脚本2

此示例用于使用电子表格上的对话框打开复制的文件。由于复制的文件作为新窗口打开,请允许打开弹出窗口。

  1. 将以下脚本复制并粘贴到电子表格的容器绑定脚本中。
  2. 运行dialog()
  3. 在电子表格上的对话框中按下复制按钮。
  4. 通过上述流程,复制fileId文件并将其作为新窗口打开。

    function dialog() {
      var data = '<input type="button" value="copy" onclick="google.script.run.withSuccessHandler(openfile).filecopy();"><script>function openfile(url) {window.open(url);}</script>';
      var html = HtmlService.createHtmlOutput(data);
      SpreadsheetApp.getUi().showModalDialog(html, 'Sample dialog');
    }
    
    function filecopy(){
      var fileId = "### File ID ###";
      return DriveApp.getFileById(fileId).makeCopy().getUrl();
    }