有两张纸,一张名为" Original"和一个名为" User1"
我想要一个菜单项供用户点击。我希望将活动工作表的名称[User1]添加到" Original"的最后一列的最后一行。片材。
不幸的是,我没有任何代码,因为GAS似乎在文档中被击中/遗漏,而且我在Google产品论坛中没有找到关于执行此功能的任何内容。
编辑:我已对功能进行了更改,并希望将工作表名称添加到第J列的第一行。但是,它没有像我想象的那样工作。有什么帮助吗?
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('My Menu')
.addItem('Store Active Sheet Name', 'getActiveSheetName')
.addToUi();
}
function getActiveSheetName() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = ss.getActiveSheet();
var active_sheet_name = active_sheet.getSheetName();
var target_sheet_name = 'GroupA';
var target_sheet = ss.getSheetByName(target_sheet_name);
var target_sheet_lastrow = target_sheet.getLastRow()+1
var target_sheet_lastcolumn = target_sheet.getLastColumn()
var firstFreeRow = parseInt(getLastRowInColumn(target_sheet_name, "J:J")) + 1
//var range = target_sheet.getRange(target_sheet_lastrow,target_sheet_lastcolumn);
var range = target_sheet.getRange(firstFreeRow,target_sheet_lastcolumn);
range.setValue(active_sheet_name);
}
function getLastRowInColumn(sheetObj, range) {
return sheetObj.getRange(range)
.getValues().filter (String).length
}
答案 0 :(得分:-1)
打开脚本编辑器(“工具”菜单),将其粘贴,保存并刷新工作表。当您尝试运行它时,您必须批准菜单加载项。
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('My Menu')
.addItem('Store Active Sheet Name', 'getActiveSheetName')
.addToUi();
}
function getActiveSheetName() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = ss.getActiveSheet();
var active_sheet_name = active_sheet.getSheetName();
var target_sheet_name = 'Original';
var target_sheet = ss.getSheetByName(target_sheet_name);
var range = target_sheet.getRange(target_sheet.getMaxRows(),target_sheet.getMaxColumns());
range.setValue(active_sheet_name);
}
编辑:你应该确保解释为什么某些东西不起作用。你检查了执行情况吗?什么是错误消息?当它不起作用时发生了什么?它是否更改了错误的单元格或值,或者甚至没有运行,因为代码中存在错误?当您寻求帮助时回答这些问题会让其他人更好地帮助您。
您从另一个答案中复制了getLastRowInColumn函数,但是它有一些错误,如果有空单元格则无法工作。尝试下面的函数,它从底部找到没有空单元格的第一行,即带有数据的最后一行,如果范围不只是一列,它也可以工作。
此外,您还将工作表名称作为此函数的第一个参数。它应该是工作表对象,target_sheet。
function getLastRowInColumn(sheetObj, column_range) {
var values = sheetObj.getRange(column_range).getValues();
for (var index = values.length - 1; index >= 0; index--) {
var row_array = values[index];
if (row_array.join("") !== "") return index + 1;
}
return 0;
}