【问题标题】:Create a new sheet in a Google Sheets with Google Apps Script使用 Google Apps 脚本在 Google 表格中创建新表格
【发布时间】:2014-05-18 20:59:23
【问题描述】:

如何使用 Google Apps 脚本在 Google 表格中创建新表格?

我知道这似乎很明显,但我只想创建一个具有特定名称的新工作表。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我一直在查看答案,虽然他们回答了如何创建工作表并为其命名的问题,但没有一个显示如何通过将名称作为参数传递来使其成为变量

    这是将变量传递给 createNewSheet 函数的函数的示例

    (必须执行的函数是setNameAndCreateSheet

    function createNewSheet(sheetName){
      // The sheetName parameter has to be passed to the function when it's called
      let activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
      let newSheet = activeSpreadsheet.insertSheet();
      newSheet.setName(sheetName); // We sheet will be called as the string of the parameter
    }
    
    function setNameAndCreateSheet(){
      // This will get the email of the user executing the script
      const userEmail = Session.getEffectiveUser().getEmail();
    
      // This will get the current date
      const date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy");
    
      // We are making the string that will be passed to the createNewSheet function
      const sheetName = date + " - " + userEmail;
      // sheetName will return something like: "04/11/2021 - youremail@gmail.com"
    
      // This will execute the function that creates the sheet, and the name will be settled to the parameter passed (sheetName)
      createNewSheet(sheetName);
    }
    

    在本例中,传递给 createNewSheet 函数的参数是这两个字符串(日期 - useremail)的串联,但它可以是任何值。

    【讨论】:

      【解决方案2】:

      我推荐this method

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      ss.insertSheet('My New Sheet');
      

      “我的新工作表”是您想要的名称。

      【讨论】:

        【解决方案3】:

        这就是我的做法......

        var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
        var newSheet = activeSpreadsheet.insertSheet();
        newSheet.setName("whatever");
        

        【讨论】:

          【解决方案4】:

          这是一个简单的例子:

          var name = (new Date()).toLocaleDateString();
          SpreadsheetApp.getActiveSpreadsheet().insertSheet(name);
          

          【讨论】:

          • 第二行末尾有一个冒号而不是分号。我会修复它,但是 S.O.对 1 个字符的编辑很愚蠢。
          【解决方案5】:

          令人惊讶的是,我没有找到任何明确而快速的答案。

          这是我的代码:

          function onOpen() {
              var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
              var yourNewSheet = activeSpreadsheet.getSheetByName("Name of your new sheet");
          
              if (yourNewSheet != null) {
                  activeSpreadsheet.deleteSheet(yourNewSheet);
              }
          
              yourNewSheet = activeSpreadsheet.insertSheet();
              yourNewSheet.setName("Name of your new sheet");
          }
          

          最后,请注意,这个新工作表将自动成为活动工作表。

          【讨论】:

          • 代码没问题,但您可能不想在 onOpen 上使用它。如果您想根据用户需求创建它,请创建一个菜单。
          • 是的,你是对的,这正是我在那之后所做的!
          • 我正在打开一个帖子,因为每次我使用脚本创建一个新工作表时,电子表格都会在一段时间后停止工作。它发生在你身上吗?
          • 哼,不,对不起,从来没有发生过!
          猜你喜欢
          • 2015-12-30
          • 1970-01-01
          • 2018-11-16
          • 1970-01-01
          • 2022-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多