如何使用Google表格中的Google Apps脚本从一个范围中创建多个标签?

我需要创建一个自定义函数,以便根据A列中的值在Google表格中创建多个标签。

这用于跟踪特定电子商务产品上的数据。它们的名称在第一个选项卡的第一列中。 A列中的每个条目都需要有一个标签为相同名称的标签。

我不知道该怎么做。

输出应该是由A列中每个单元格标记的新标签页。

lkjgasdlkjfsd 回答:如何使用Google表格中的Google Apps脚本从一个范围中创建多个标签?

将此代码复制并粘贴到脚本编辑器中。

function createSheet(sheetIndex,value){
  // Check if cell is empty after editing
  if (value.oldValue){
    value = 'Sheet' + (sheets.length - sheetIndex);
  }

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  // If sheet already exits just change the sheet name
  if (sheets[sheetIndex]) {
    sheets[sheets.length - sheetIndex].setName(value)
  } else {
    SpreadsheetApp.getActiveSpreadsheet().insertSheet(value);
  }
}

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  // Check if the sheet being edited is the first sheet and first column (A)
  if (sheet.getSheetId() == sheets[0].getSheetId() && sheet.getActiveCell().getColumn() == 1) {
    createSheet(e.range.getRowIndex(),e.value)
  }

}

您可以扩展代码以支持删除;不过这有点棘手,因为没有onDelete事件。您可以将工作表数组与列中的值进行比较,以确定要删除的工作表。

,

使用模板和位置创建多个图纸

  1. 打开一个新的电子表格并转到脚本编辑器
  2. 加载代码并保存
  3. 创建名为“工作表数据”的工作表
  4. 创建三个模板
  5. 运行createTrigger()
  6. 关闭电子表格
  7. 打开电子表格需要一些时间,它将创建所有工作表,而不会打扰模板或工作表数据表。 代码:
#Transform
dst_crs = "EPSG:5243"
with rasterio.open('geo.tif') as src:
    transform,width,height = calculate_default_transform(
        src.crs,dst_crs,src.width,src.height,*src.bounds)
    kwargs = src.meta.copy()
    kwargs.update({
        'crs': dst_crs,'transform': transform,'width': width,'height': height,})

    with rasterio.open('5243geo.tif','w',**kwargs) as dst:
        for i in range(1,src.count + 1):
            reproject(
                source=rasterio.band(src,i),destination=rasterio.band(dst,src_transform=src.transform,src_crs=src.crs,dst_transform=transform,dst_crs=dst_crs,resampling=Resampling.nearest)
            print(src.transform)
            print(transform) #seems good
            print(src.meta) #the meta info is correct
            print(dst.meta) #the meta info is correct

创建表:

enter image description here

三个模板: 我只是将这些模板制作为简单的示例,以帮助您创建工作表。我发现非程序员在制作花哨的电子表格方面确实非常擅长。对我来说,我让它们保持简单。

enter image description here

enter image description here

enter image description here

我尝试使用此gif来显示如何在第一次打开电子表格时创建文件。不会创建其他相同名称的工作表。但是,如果添加其他名称,它将创建它们。它无法删除已删除的工作表名称,因此您可以自己做些事情。

enter image description here

,

每次在原始工作表中的A列中的单元格被编辑时,仅当不存在具有该名称的其他工作表时,此函数才创建一个新工作表。为此,使用了onEdit触发器以及相应的event object

function onEdit(e) {
  var firstSheetName = "Sheet1"; // Name of your original sheet,change accordingly
  var range = e.range; // Edited cell
  var ss = e.source; // Edited spreadsheet
  var sheetName = range.getSheet().getName(); // Name of edited sheet
  var value = range.getValue(); // Value of the edited cell
  // Checks whether edited sheet is the original one,and edited column is A:
  if(sheetName == firstSheetName && range.getColumn() == 1) {
    // Checks whether a sheet with this name exists:
    var sheetExists = ss.getSheets().some(function(sheet) {
      return sheet.getName() == value;
    });
    // Create new sheet only if a sheet with this name it doesn't exist:
    if(!sheetExists) { 
      ss.insertSheet(value);
      range.activate(); // Go back to original edited cell
    }
  }
}
  • 逐步查看共享脚本中的注释以了解代码的作用。
  • 在此示例中,原始工作表称为“ Sheet1”。如果不是您的情况,请相应地进行更改。

我希望这会有所帮助。

本文链接:https://www.f2er.com/3130731.html

大家都在问