用于将打开工作表保存到文件的Google脚本

时间:2017-03-28 13:12:32

标签: google-apps-script

我正在学习Google脚本和Javascripts,我喜欢编码解决方案,但需要了解更多,所以道歉有点慢。

我知道如何在谷歌文档中使用脚本,但我还不确定如何构建很多东西,我正在从示例中学习并尝试从我发现的内容中理解。

我有一个场景,我有一个谷歌表,我想用作模板,以便用户可以输入所有字段中的数据然后单击按钮将整个表格保存为文件(与进行相同)文件>另存为)但在保存时使用字段中的ID号作为文档的名称,并将它们放在与主模板相同的目录中的文件夹中。单击保存按钮后,工作表需要重置为原始状态以备另一个条目。

用户可以打开保存的文档并根据需要进行更改。

我还没有能够找到我能够理解的例子来使它们工作,所以任何帮助都会很棒,甚至可以指导我更容易学习的资源

感谢。

1 个答案:

答案 0 :(得分:1)

首先,在驱动器中创建一个名为 MyTargetFolder 的文件夹。放入您的模板电子表格,将“ ID ”填入第一行作为字段,将任意数字作为第二行的值。

您需要的所有脚本如下:

// create a custom menu to add Save feature.   
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Feature')
    .addItem('Save Spreadsheet', 'saveSpreadSheet')
    .addToUi();
}

然后实现保存功能。

function saveSpreadSheet() {

  var thisSpreadSheet = SpreadsheetApp.getActive();

  /*
   What first row and second row look like :
         -----
        | ID  |
         -----
        | 123 |
         -----
  */
  var id = thisSpreadSheet.getActiveSheet().getRange(2, 1, 1, 1).getValue();

  var folders = DriveApp.getFolders();
  var destFolder = '';
  while (folders.hasNext()) {
    var folder = folders.next();
    if ( folder.getName() == 'MyTargetFolder' ) {
      destFolder = DriveApp.getFolderById(folder.getId()); 
    }
  }

  DriveApp.getFileById(thisSpreadSheet.getId()).makeCopy(id, destFolder); 

  // recover the template
  thisSpreadSheet.getActiveSheet().getRange(2, 1, 1, 1).setValue(' ');

  SpreadsheetApp
    .getUi()
    .alert('Check your Drive to make sure file have been saved');
}

有关电子表格的所有Google应用脚本API都有详细记录here

关于Drive的API。