我的 google 表格,值只是一个例子
出于隐私原因,这只是一个 gsheet 作为示例。
在我的实际 gsheet 中,我使用 python 自动附加数据。但是我的表不需要超过 50 行。我如何在带有 JS 的 gsheet 中自动化,如果添加第 51 行,第 1 行被删除并且所有列表条目向上移动一行,以便我的数据位于第 1 行到第 50 行?
var ss = SpreadsheetApp.openById("XXXXX");
var sheet = ss.getSheetByName('Tabellenblatt1');
function myFunction() {
//if row number >50 exceute code below
//first row should be deleted here
//shift rows up
sheet.getRange("A1:B3").moveTo(sheet.getRange("A2:B4"));
}
最佳答案
当您在 python 中输入值时,我真的看不出如何自动处理该问题,因此 onChange
触发器将不起作用。
您仍然可以创建基于时间的触发器并根据输入频率“裁剪”数据。
如果你仍然需要它,你可以试试这个 这将删除范围内但不是整行,这意味着这不会影响其他数据。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getActiveSheet();
var limit = 50;
var numRows = sheet.getLastRow();
var range = sheet.getRange('A1:B' + numRows + '');
var values = range.getValues();
var numRowsToDelete = 0;
if (numRows > limit){
numRowsToDelete = numRows - limit;
values.splice(0, numRowsToDelete)
for (var i = 0; i < numRowsToDelete; i++)
{
var arr = [];
for (var j = 0; j < values[0].length; j++)
arr.push("");
values.push(arr)
}
range.setValues(values);
}
}
或者更简单,如果你想删除你可以做的整行
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getActiveSheet();
var numRows = sheet.getLastRow();
var limit = 50;
if (numRows > limit){
var numRowsToDelete = numRows - limit;
//first argument is the start index where you delete so if you
// have a header you can put 2 and add a + 1 to the limit variable
sheet.deleteRows(1, numRowsToDelete);
}
}
引用:
关于javascript - 删除 gsheet 中的第一行并将行向上移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124311/