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列中的字符串)
- 脚本还删除移动的行
{
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语句。