尝试自动打开脚本创建的文档

时间:2015-01-22 19:09:17

标签: google-apps-script google-sheets google-drive-api google-docs google-docs-api

我有一个电子表格,可以跟踪一系列文档。在电子表格内部,我有一个按钮,按下该按钮后,从我的驱动器中找到一个特定的模板文件并复制它。该脚本如下所示:

function myFunction() {
    var file = DriveApp.getFileById("<template doc id goes here>");
    var folder = DriveApp.getFolderById("<folder where new file will go>"); 
    var newfile = "<newly created file name goes here>";

    file.makeCopy(newfile, folder);
}

有没有办法可以在创建新标签后强制新创建的文档打开?这样一旦创建了新文档,我就不需要导航回文件夹并手动打开进行编辑。

2 个答案:

答案 0 :(得分:0)

如果您使用HTML服务作为原始按钮,则只需添加window.open功能。

<script>
  function openTheUrl() {
    window.open("http://www.stackoverflow.com");
  };
</script>

可以使用文件类的getUrl()方法返回新文档的URL:

Google Documentation - getUrl()

此过程有多个步骤。

  • 使用HTML中的gs调用应用脚本google.script.run功能
  • Google服务器端代码创建新文档并返回值
  • onSuccess回调函数打开新文档

HTML脚本标记,用于调用应用脚本代码,并定义成功函数:

<script>

  window.callServerCode = function() { 
    google.script.run
    .withSuccessHandler(openTheUrl)
    .myFunction();
  }

  function openTheUrl(argNewUrl) {
    Logger.log('argNewUrl: ' + argNewUrl);
    window.open(argNewUrl);
  };
</script>

Apps Script代码需要返回一个值:

function myFunction() {
  var file = DriveApp.getFileById("<template doc id goes here>");
  var folder = DriveApp.getFolderById("<folder where new file will go>"); 
  var newfile = "<newly created file name goes here>";

  var newFile = file.makeCopy(newfile, folder);
  var newDocURL = newFile.getUrl();

  return newDocURL;
}

google.script.run withSuccessHandler函数自动接收返回值。

答案 1 :(得分:0)

正如本问题How to open a URL link from JavaScript inside a Google Apps Script HTML Google Site Gadget所述,调用window.open因为caja清理而无法工作。

但是您可以将网址添加到cel,或在HTML中创建链接。用户必须单击它才能打开可能不是您想要的解决方案的新工作表,但这样可以节省查看该新文件的驱动器的时间。