Javascript 获取对象数组中的特定数据并删除其行(stripe google apps脚本)
我需要删除上面有0值的行 这是我的密码Javascript 获取对象数组中的特定数据并删除其行(stripe google apps脚本),javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我需要删除上面有0值的行 这是我的密码 var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet3"); var getLengthCol = getLengthColumn(sheet,'A:A'); var countColLength = 0; for(var i = 0; i < getLengthCol.length; i++) { if(getLengthCol[i] !=
var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet3");
var getLengthCol = getLengthColumn(sheet,'A:A');
var countColLength = 0;
for(var i = 0; i < getLengthCol.length; i++)
{
if(getLengthCol[i] != '')
{
countColLength = i+1;
}
}
// var rowData = getDataFromOrig.getActiveSheet().getRange(2,1,countColLength,1).getValues();
var rowData = sheet.getRange(2,1,countColLength,1).getValues();
for(var i = 0 ; i < rowData.length; i++)
{
if(rowData[i] == 0)
{
sheet.deleteRows(rowData[i]);
}
}
var sheet=SpreadsheetApp.getActive().getSheetByName(“Sheet3”);
var getLengthCol=getLengthColumn(表'A:A');
var countColLength=0;
对于(变量i=0;i
这是数据
我正在尝试删除第一列中值为0的所有行
但我得到了这个错误
例外:这些行超出范围
我相信你的目标和现状如下
var values = responseValue.data.reduce((ar, { unit_amount }) => {
if (unit_amount != 0) ar.push([unit_amount]);
return ar;
}, []);
- 您希望从响应值中检索
单位金额的值
- 在脚本中,
是示例图像的值Logger.log(res.getContentText())的值
- 您已经从API中获得了值
- 从您的问题中,我无法理解您期望的输出格式。因此,当我修改的脚本的结果值不是您期望的结果时,您可以提供示例输出值吗?这样,我想修改脚本
谢谢你的回答,但是我找到了解决问题的方法,因为我已经得到了不需要使用GET操作的值。但实际上我想做的是,如果amount=0,那么我将删除行中的数据。就这些了,谢谢你 当
unit\u amount
的值不是0
时,您希望检索这些值。如果我的理解是正确的,那么使用过滤器进行以下修改如何
发件人:
致:
或者,当使用reduce
时,它变成如下
var values = responseValue.data.reduce((ar, { unit_amount }) => {
if (unit_amount != 0) ar.push([unit_amount]);
return ar;
}, []);
- 如果要检索关于上述脚本的一维数组,请将
[unit\u amount]
修改为unit\u amount
增加2:
我注意到你的问题已经改变了。很遗憾,对于您更新的问题,我无法理解脚本中的getLengthColumn
。但是,为了实现您的新目标,下面的示例脚本怎么样
示例脚本:
- 在这个示例脚本中,使用TextFinder检索单元格值中包含
0
的行并将其删除
参考资料:
谢谢您的回答,但我找到了解决问题的方法,因为我已经获得了不需要使用GET操作的值。但实际上我想做的是,如果amount=0,那么我将删除行中的数据。就这些,谢谢though@Ginxxx谢谢你的回复。给您带来不便,我深表歉意。关于,但我实际上想做的是,如果amount=0,那么我将删除行中的数据。
,我又添加了一个修改过的脚本。你能确认一下吗?如果这不是你期望的方向,我道歉。如果上面修改的脚本没有用,您能提供您期望的示例输出值吗?在此,我想修改脚本。@Ginxxx谢谢您的回复。我不得不为我的理解力差道歉。关于我试图做的是,从post方法获取数据后,我将其从数组中存储,如下消息[2]=params.payload.unit_amount代码>,在脚本中使用GET方法。那么你的实际情况和你的问题脚本不同?我对此感到困惑。我为此道歉。我能问一下你目前处境的细节吗?@Tanaike,为了正确了解你的处境,需要确认你的处境。首先,Logger.log(res.getContentText())
的值是示例图像的值。我的理解正确吗?如果我的理解是正确的,那么什么是message[2]=params.payload.unit\u amount代码>和数据。[单位金额]=0
?另外,您能否提供当前脚本以复制未定义的TypeError:cannotread属性'filter'的问题。我为我的拙劣技能深表歉意。@Ginxxx谢谢您的回复。我很高兴你的问题解决了。我为给您带来的不便表示歉意。关于提议的脚本,我在脚本中添加了解释。你能确认一下吗?如果这没有用,我再次道歉。
var values = responseValue.data.filter(({ unit_amount }) => unit_amount != 0).map(({ unit_amount }) => [unit_amount]);
var values = responseValue.data.reduce((ar, { unit_amount }) => {
if (unit_amount != 0) ar.push([unit_amount]);
return ar;
}, []);
var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet3");
sheet
.getRange("A1:A" + sheet.getLastRow()) // Retrieve the range. In this case, column A is retrieved.
.createTextFinder("0") // Search 0 in the column A using TextFinder.
.matchEntireCell(true) // The cell is retrieved when the cell value is the same with 0.
.findAll() // Here, the searched result is returned. In this case, the ranges are returned as an array.
.reverse() // Reverse the array.
.forEach(r => sheet.deleteRow(r.getRow())); // Delete rows using loop.