【问题标题】:Google script to Save open Sheet to file谷歌脚本将打开的工作表保存到文件
【发布时间】:2020-05-19 19:43:39
【问题描述】:

我正在学习 Google Scripts 和 Javascripts,我喜欢编码解决方案,但需要了解更多信息,因此对于速度有点慢深表歉意。

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

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

如果需要,用户可以打开保存的文档并进行更改。

我无法找到我能完全理解的示例以使它们发挥作用,因此任何帮助都会很棒,甚至是可以让我更容易学习的资源指针

谢谢。

【问题讨论】:

  • 您的问题是针对 Stack Overflow 的一般问题。如果您想了解有关如何使用 Apps 脚本的一般建议,请尝试Apps Script Group
  • 如果我的回答符合你的需要,也许你可以“接受”它。

标签: google-apps-script


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多