gpt4 book ai didi

javascript - 如何修复工作表之间自动传输行的错误集成?

转载 作者:行者123 更新时间:2023-12-01 00:48:42 24 4
gpt4 key购买 nike

我想要完成的是:

  • 有一个名为“data”的数据输入表(其数据由表单提供)
  • 脚本将信息从数据移动到sheet1/sheet2/.../sheetn(根据在第3列中找到的字符串)
  • 脚本还会删除移动的行

我认为deleteRow命令工作正常,我怀疑罪魁祸首是对数组中字符串的检测。

我已经经常使用搜索,尝试了一些代码,我已将其确定为最有可能的候选者(由库珀编写),因为它几乎完成了我需要它做的事情。

我尝试记录一下,但不幸的是我对编码还不太了解。目前我正在通过反复试验来学习。如果我记录 vals[i][2] 我只得到 1 个字符串,而不是我的示例输入中的一些字符串。

当我仅设置一个目标表(sh1)和目标术语时,它可以工作。但当我扩展它时,它就不再起作用了。

{
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 语句被您在 if< 之间包含的 Logger.log() 强制返回 true/{。一旦删除它,您的代码就会完全按照您的预期运行。

<小时/>

示例:

如果我们运行以下脚本:

var check = ['Apple', 'Pear', 'Fruit'];
for (i = 0; i < check.length; i++) {
if (check[i] === 'Apple') {
console.log('Found!');
}
}

我们正在循环遍历一个数组,并记录“Found!”每次找到数组中的项目时。这与您的脚本的工作方式相同。它按预期工作,“Apple”在数组中只找到一次,因此日志如下所示:

Found!

<小时/>

一旦我们在 if{ 之间放置一条日志,如下所示:

var check = ['Apple', 'Pear', 'Fruit'];
for (i = 0; i < check.length; i++) {
if (check[i] === 'Apple')
console.log("Oops!")
{
console.log('Found!');
}
}

我们得到以下信息:

Oops!
Found!
Found!
Found!

<小时/>

摘要:

确保if{ 之间包含 if 语句的条件,添加任何内容否则可能会返回误报,就像您今天遇到的那样。

<小时/>

引用:

关于javascript - 如何修复工作表之间自动传输行的错误集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com