复制 Google 工作表工作簿并根据输入值应用程序脚本代码重命名工作表

问题描述 投票:0回答:1

我有一个 Google 表格文件,其中有 2 个工作簿,一个是名称,另一个是数据

我有以下代码,它复制工作簿并将工作簿名称重命名为最后一列的值作为工作簿名称。在名称工作簿工作表中,我有 A1 到 A181 数据。我希望数据表重复 181 次,并且工作簿表名称应根据名称表 A1:A181 的值更改。

function Duplicate() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
  var ss1 = SpreadsheetApp.getActiveSheet();
  ss.duplicateActiveSheet();
 var myValue = ss1.getRange(1, 1, 1, ss1.getLastColumn()).getDisplayValues()[0].filter(String).pop();
ss.renameActiveSheet(myValue);
}

另外在新工作表中我想要 B2=工作表名称

Google 表格链接 https://docs.google.com/spreadsheets/d/1XTPFuYusDyffbTucYGZH0wi9uSTnUfGrUOwW1OuGg4w/edit?usp=sharing

google-sheets duplicates rename replication file-rename
1个回答
0
投票

要处理所有名称,您需要一个循环

Spreadsheet.duplicateActiveSheet()
方法复制活动工作表并使新工作表成为活动工作表。为了简单起见,使用
Sheet.copyTo()
,如下所示:

function duplicateTemplate() {
  const ss = SpreadsheetApp.getActive();
  const names = ss.getRange('Names!A1:A').getValues().flat().filter(String);
  const template = ss.getSheetByName('Data');
  names.forEach(name => {
    const sheet = template.copyTo(ss);
    try {
      sheet.setName(name);
    } catch (error) {
      ss.toast(error.message);
      Utilities.sleep(1000);
    }
    sheet.getRange('B2').setValue(name);
  });
}

参见 Sheet.copyTo()

© www.soinside.com 2019 - 2024. All rights reserved.