Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取对象数组中的特定数据并删除其行(stripe google apps脚本)_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 获取对象数组中的特定数据并删除其行(stripe google apps脚本)

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] !=

我需要删除上面有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] != '')
    {
      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中获得了值
在这种情况下,下面修改的脚本如何

修改脚本: 注:
  • 从您的问题中,我无法理解您期望的输出格式。因此,当我修改的脚本的结果值不是您期望的结果时,您可以提供示例输出值吗?这样,我想修改脚本
参考:
增加1: 从你下面的答复中,


谢谢你的回答,但是我找到了解决问题的方法,因为我已经得到了不需要使用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.