我需要创建一个自定义函数,以便根据A列中的值在Google表格中创建多个标签。
这用于跟踪特定电子商务产品上的数据。它们的名称在第一个选项卡的第一列中。 A列中的每个条目都需要有一个标签为相同名称的标签。
我不知道该怎么做。
输出应该是由A列中每个单元格标记的新标签页。
答案 0 :(得分:0)
将此代码复制并粘贴到脚本编辑器中。
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 :(得分:0)
使用模板和位置创建多个图纸
#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, i),
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
创建表:
三个模板: 我只是将这些模板制作为简单的示例,以帮助您创建工作表。我发现非程序员在制作花哨的电子表格方面确实非常擅长。对我来说,我让它们保持简单。
我尝试使用此gif来显示如何在第一次打开电子表格时创建文件。不会创建其他相同名称的工作表。但是,如果添加其他名称,它将创建它们。它无法删除已删除的工作表名称,因此您可以自己做些事情。
答案 2 :(得分:0)
每次在原始工作表中的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
}
}
}
我希望这会有所帮助。