Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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

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 如何修复图纸之间自动传输行的错误集成?_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何修复图纸之间自动传输行的错误集成?

Javascript 如何修复图纸之间自动传输行的错误集成?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我想要实现的是: 有一张名为“数据”的数据输入表(其数据通过表格输入) 脚本将信息从数据移动到sheet1/sheet2/../sheetn(根据第3列中的字符串) 脚本还删除移动的行 我认为deleteRow命令工作正常,我怀疑罪魁祸首是数组中字符串的检测 我已经使用了很多搜索,尝试了一些代码,我已经确定这是最有可能的候选人(它的库珀),因为它几乎做什么,我需要它做 我试着写了一点日志,但不幸的是我还不太懂编码。目前我正在尝试和错误学习。 如果我为VAL[i][2]记录日志,我只会得到一个

我想要实现的是:

  • 有一张名为“数据”的数据输入表(其数据通过表格输入)
  • 脚本将信息从数据移动到sheet1/sheet2/../sheetn(根据第3列中的字符串)
  • 脚本还删除移动的行
我认为deleteRow命令工作正常,我怀疑罪魁祸首是数组中字符串的检测

我已经使用了很多搜索,尝试了一些代码,我已经确定这是最有可能的候选人(它的库珀),因为它几乎做什么,我需要它做

我试着写了一点日志,但不幸的是我还不太懂编码。目前我正在尝试和错误学习。 如果我为VAL[i][2]记录日志,我只会得到一个字符串,而不是示例输入中的几个字符串

当我只设置了一个targetsheet(sh1)和target term时,它就工作了。但是当我扩展它时,它就不再工作了

{
  var ss=SpreadsheetApp.getActive();
  var sh0=ss.getSheetByName('Data');
  var rg0=sh0.getDataRange();
  var sh1=ss.getSheetByName('Applesheet');
  var sh2=ss.getSheetByName('Banana');
  var sh3=ss.getSheetByName('Cherry');

  var vals=rg0.getValues();
  Logger.log(vals)  
  for(var i=vals.length-1;i>0;i--)
  {
    if(vals[i][2]=='Apple')
     Logger.log("PV Abfrage -", vals[i][2])
    {
      sh1.appendRow(vals[i]);
      sh0.deleteRow(i+1);
    }
   if(vals[i][2]=='Banana') //also tried with else if here
    {
    sh2.appendRow(vals[i]);
    sh0.deleteRow(i+1);
    }
   if(vals[i][2]=='Cherry')
    {
    sh3.appendRow(vals[i]);
    sh0.deleteRow(i+1);
    }
  }
}
我的代码移动不包含任何术语的行。 它也应该只移动包含这个术语的行,但是这样做是非常不合理的。 我认为所有的行都会附加到Applesheet,包含香蕉的行会被移动到香蕉,但是包含樱桃的行不会。 我肯定没有足够的经验来判断,但这段代码似乎有点不可靠,因为即使我的测试版本只有一个if,也无法按照我希望的方式执行

问题: 您的第一个
if
语句被
Logger.log()
强制返回
true
,您已经将它包含在
if
{
之间。一旦您删除它,您的代码就会完全按照您的预期运行


例子: 如果我们运行以下脚本:

var-check=[‘苹果’、‘梨’、‘水果’];
对于(i=0;i
问题: 您的第一个
if
语句被
Logger.log()
强制返回
true
,您已经将它包含在
if
{
之间。一旦您删除它,您的代码就会完全按照您的预期运行


例子: 如果我们运行以下脚本:

var-check=[‘苹果’、‘梨’、‘水果’];
对于(i=0;i}<代码> >删除<代码>日志。日志在你试图开始你的第一个代码>如果语句,它强迫它返回代码<真/ <代码>不管数组中的值是什么。哇,这似乎是个诀窍。非常感谢。祝你有个愉快的一天!“罗斯,你能把你的评论作为答案吗?”在写一个例子的时候,现在发布…删除<代码>日志。日志在你试图开始你的第一个代码>的中间,如果语句,它强迫它返回代码<真/ <代码>,不管数组中的值是什么。哇,这似乎是个办法。非常感谢。祝你有个美好的一天!“罗斯。你的评论是作为答案吗?@和ReSudiARTE我只是在写一个例子,现在发布……这很有趣。你知道这是什么原因吗?我最初猜到JavaScript是“跳过”<代码>(…)>代码>,看到 Logg.Log.()
返回truthy,但是检查它,放入falsy值也会执行if语句。遇到
else
,它也会抛出一个错误,但在其他情况下运行良好。对于其他人,我想我回答了我自己的问题:它似乎是由以下原因引起的:例如,它没有被解析为
if(cond)??{statement block}
,但作为
if(cond);expression;{expression-inside-a-block}
。这就是
else
抛出错误的原因——就解析器而言,没有前面的if语句。这很有趣——你知道这是什么根源吗?我最初猜测Javascript“跳过”了
(…)
并查看
Logger.log()
返回truthy,但检查它时,输入falsy值也会执行if语句。遇到
else
,它也会抛出一个错误,但在其他方面运行良好。对于其他人,我想我回答了我自己的问题:它似乎是由引起的;例如,它没有被解析为
if(cond)?{statement block}
,但作为
if(cond);expression;{expression-inside-a-block}
。这就是
else
抛出错误的原因——就解析器而言,前面没有if语句。