Zac*_*ack 23 google-sheets google-apps-script
如果在该行中为"C"列输入的值为0或空白,我希望能够删除Google Spreadsheets中的整行.有没有一个简单的脚本我可以编写来完成这个?谢谢!
Bry*_*n P 22
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这仅查看现在单个单元格编辑的值,而不是整个工作表中的值.
Mik*_*ace 19
我写了这个脚本,为我的一个Google电子表格做同样的事情.我希望能够在电子表格中的所有数据之后运行脚本,因此我让脚本添加了一个菜单选项来运行脚本.
/**
* 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);
};
Run Code Online (Sandbox Code Playgroud)



ron*_*neo 15
我可以建议一个简单的解决方案,而不使用脚本!
假设您要删除C列中带有空文本的行.在表格C列中排序数据(数据菜单 - >按列C排序表格,A-> Z),这样所有空文本行将一起可用.
只需一起选择这些行,然后右键单击 - >删除行.然后,您可以根据所需的列重新排序数据.完成.
小智 6
我遇到了一些脚本问题所以我的解决方法是使用"过滤器"工具.
这将保留包含您搜索的单词的行,并且可以通过批量选择它们来删除它们,同时按住Shift键>右键单击>删除行.
很简单的要求。尝试这个 :
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);
}
Run Code Online (Sandbox Code Playgroud)
编辑:重新阅读问题我不确定问题是否要求“实时”编辑功能或输入数据后应用的功能(如上所示)...我不太清楚。 ..因此,如有必要,请随意更准确;)
| 归档时间: |
|
| 查看次数: |
75299 次 |
| 最近记录: |