我正在使用此脚本删除当前google表格标签中的最后一行和最后几列,它显示了“这些行超出范围”。错误。 我不知道为什么,当我使用整数而不是第二个参数时,它工作正常。
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
//Delete rows 201+
sheet.deleteRows(201, sheet.getLastRow() - 200 );
//Delete Columns 10+
sheet.deleteColumns(10, sheet.getLastColumn() - 9 );
答案 0 :(得分:0)
超出范围的错误与方法.deleteRows和.deleteColumns有关。 该错误是由于尝试调用一个不存在的范围而引起的。无论是因为它试图调用工作表中最大的单元格数量,还是因为它试图调用第0个范围甚至是一个负范围,都在它的下面。您无法调用.getRange(0,0),因为它不存在,并且会返回超出范围的错误。 这里的问题是我无法为您提供解决方案,因为我没有关于如何获取某些变量的上下文。 我能做的是建议使用其他方法。从您的代码判断,您只想删除一个行和一个列。使用.deleteRow(Row)@nd .deleteColumn(Column)完成此操作要容易得多。 这里是文档: https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteColumn(Integer) 和 https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteRow(Integer) 如果这样做不能帮助您创建工作表副本,请删除所有敏感信息并共享具有编辑权限的链接,以便本人亲自检查您的代码和电子表格,以更好地解决问题。
答案 1 :(得分:0)
下面有一些简单的脚本可能会对您有所帮助。
function delLastNRows(n){
var n=n || 3;//allows you to delete last three rows without passing function a parameter.
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var lr=sh.getLastRow();
if(lr>=n){
for(var i=0;i<n;i++){
sh.deleteRow(sh.getLastRow());
}
}
}
function delLastNCols(n){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var lc=sh.getLastColumn();
if(lc>=n){
for(var i=0;i<n;i++){
sh.deleteColumn(sh.getLastColumn())
}
}
}
答案 2 :(得分:0)
我找到了答案的人,我应该使用getMaxRows()来获取工作表中的总行数,这是我使用的函数。
void rdo_HEX_CheckedChanged(object sender, EventArgs e)
{
if (rdo_HEX.Checked)
{
try
{
textbox1.Text = AsciiToHex(textbox1.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
rdo_HEX.Checked = false;
}
}
else
{
try
{
textbox1.Text = HexToAscii(textbox1.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}