我希望能够删除整个排在谷歌电子表格,如果值行中输入的说列“C”为0或空白。 有一个简单的脚本,我可以写来完成呢? 谢谢!
Answer 1:
function onEdit(e) {
//Logger.log(JSON.stringify(e));
//{"source":{},"range":{"rowStart":1,"rowEnd":1,"columnEnd":1,"columnStart":1},"value":"1","user":{"email":"","nickname":""},"authMode":{}}
try {
var ss = e.source; // Just pull the spreadsheet object from the one already being passed to onEdit
var s = ss.getActiveSheet();
// Conditions are by sheet and a single cell in a certain column
if (s.getName() == 'Sheet1' && // change to your own
e.range.columnStart == 3 && e.range.columnEnd == 3 && // only look at edits happening in col C which is 3
e.range.rowStart == e.range.rowEnd ) { // only look at single row edits which will equal a single cell
checkCellValue(e);
}
} catch (error) { Logger.log(error); }
};
function checkCellValue(e) {
if ( !e.value || e.value == 0) { // Delete if value is zero or empty
e.source.getActiveSheet().deleteRow(e.range.rowStart);
}
}
这仅着眼于从一个单细胞编辑的价值,而不是现在在整个工作表中的值。
Answer 2:
我写这个剧本做同样的事情,我的谷歌电子表格中的一个。 我希望能够运行该脚本后,所有的数据都在电子表格中,所以我必须在脚本中添加一个菜单选项来运行该脚本。
/**
* Deletes rows in the active spreadsheet that contain 0 or
* a blank valuein column "C".
* For more information on using the Spreadsheet API, see
* https://developers.google.com/apps-script/service_spreadsheet
*/
function readRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[2] == 0 || row[2] == '') {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};
/**
* Adds a custom menu to the active spreadsheet, containing a single menu item
* for invoking the readRows() function specified above.
* The onOpen() function, when defined, is automatically invoked whenever the
* spreadsheet is opened.
* For more information on using the Spreadsheet API, see
* https://developers.google.com/apps-script/service_spreadsheet
*/
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Remove rows where column C is 0 or blank",
functionName : "readRows"
}];
sheet.addMenu("Script Center Menu", entries);
};
测试表格之前:
从菜单中运行脚本:
行书后:
Answer 3:
我可以提出一个简单的解决方案,而无需使用脚本!
比方说,你想删除在C列空的文本行进行排序的数据(Data菜单 - >排序表柱C,A-> Z)在片WRT C柱,让所有的空文本行会一起提供。
只要选择这些行一起,右击 - >删除行。 然后,您可以将您的数据根据你所需要的列重新排序。 完成。
Answer 4:
我有几个问题,脚本,所以我的解决方法是使用“过滤器”的工具。
- 选择所有的电子表格数据
- 点击过滤器工具图标(看起来像酒杯)
- 点击你要搜索的列的第一个单元格的新的可用过滤器图标。
- 选择“筛选按条件”>设置条件(我用的是“文本包含”>“字”)
这将使包含单词的搜索的行,他们可以通过批量选择它们,同时按住Shift键删除>点击右键>删除行。
Answer 5:
这就是我设法让工作。 你可以看到,我向后循环通过片上,从而作为行被删除的下一行不会被跳过。 我希望这可以帮助别人。
function UpdateLog() {
var returnSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RetLog');
var rowCount = returnSheet.getLastRow();
for (i = rowCount; i > 0; i--) {
var rrCell = 'G' + i;
var cell = returnSheet.getRange(rrCell).getValue();
if (cell > 0 ){
logSheet.
returnSheet.deleteRow(i);
}
}
}
Answer 6:
很简单的要求。 试试这个 :
function try_It(){
deleteRow(2); //// choose col = 2 for column C
}
function deleteRow(col){ // col is the index of the column to check for 0 or empty
var sh = SpreadsheetApp.getActiveSheet();
var data = sh.getDataRange().getValues();
var targetData = new Array();
for(n=0;n<data.length;++n){
if(data[n][col]!='' && data[n][col]!=0){ targetData.push(data[n])};
}
Logger.log(targetData);
sh.getDataRange().clear();
sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
}
编辑 : 重新阅读我不知道如果这个问题是问关于编辑功能或功能(如本以上)一个“活”的数据输入后应用问题...这不是我很清楚。 ..所以随时要在必要时更准确;)
Answer 7:
仔细阅读你的问题,我想出了这个解决方案:
function onOpen() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// create menu
var menu = [{name: "Evaluate Column C", functionName: "deleteRow"}];
// add to menu
ss.addMenu("Check", menu);
}
function deleteRow() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get active/selected row
var activeRow = ss.getActiveRange().getRowIndex();
// get content column C
var columnC = ss.getRange("C"+activeRow).getValue();
// evaluate whether content is blank or 0 (null)
if (columnC == '' || columnC == 0) {
ss.deleteRow(parseInt(activeRow));
}
}
此脚本将创建在文件加载一个菜单,使您能够删除行的基础上,在C列设置,或没有这些标准。
Answer 8:
有一个简单的方法:
- 使用过滤 ,只显示你想要删除的行。 例如,我的专栏,在此基础上我想删除行对他们的类别,A,B,C通过过滤界面我只选择了A和B,这是我想删除。
- 选择所有行并将其删除。 这样做,在我的例子中,有效地选择所有的A和B行,并删除他们。 现在我的电子表格不显示任何行。
- 关闭过滤器。 这不隐藏我的C行。 完成!
Answer 9:
这个简单的代码做的工作对我来说!
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // get active spreadsheet
var activeRow = ss.getActiveRange().getRowIndex(); // get active/selected row
var start=1;
var end=650;
var match='';
var match2=0; //Edit this according to your choice.
for (var i = start; i <= end; i++) {
var columnC = ss.getRange("C"+i).getValue();
if (columnC ==match || columnC ==match2){ ss.deleteRow(i); }
}
}
文章来源: Delete a row in Google Spreadsheets if value of cell in said row is 0 or blank