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

Posted

技术标签:

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

如何?

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

【问题讨论】:

【参考方案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 上使用它。如果您想根据用户需求创建它,请创建一个菜单。 是的,你是对的,这正是我在那之后所做的! 我正在打开一个帖子,因为每次我使用脚本创建一个新工作表时,电子表格都会在一段时间后停止工作。它发生在你身上吗? 哼,不,对不起,从来没有发生过!

以上是关于使用 Google Apps 脚本在 Google 表格中创建新表格的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Apps 脚本中使用 BigQuery 连接到 Google 电子表格

如何在 Google Apps 脚本中使用服务帐户对 Google 表格进行身份验证

Google 表单 - 使用 Google Apps 脚本在项目中添加自定义按钮“更多信息”

如何使用 Google Apps 脚本在个人 Google 云端硬盘和团队云端硬盘之间移动文件?

使用 Google Apps 脚本将文件上传到我的 google 驱动器(在 GOOGLE 中没有表格)

如何使用 Google Apps 脚本将公式添加到 Google 表格?