gpt4 book ai didi

javascript - GAS 电子表格通过标记为 "SENT"来避免重复,不起作用?

转载 作者:行者123 更新时间:2023-11-27 23:43:29 25 4
gpt4 key购买 nike

我在Google电子表格中有这个脚本,它可以很好地获取所有标记为“READY”的行,然后它将“W”(23)列中的值设置为“SENT”,然后我试图避免获取重复项,通过将该列标记为“SENT”,但是当我再次运行代码时,它会忽略刚刚粘贴的“SENT”?这里出了什么问题?

var ss = SpreadsheetApp.openById("12y85GmJ94s6k3213j2nGK8rFr0GOfd_Emfk8WHu_MUQ");
var stitchSheet = ss.getSheetByName("Sheet8");
var orderSheet = ss.getSheetByName("Sheet1");

var SENT = "SENT";

function getOrders() {

var range = orderSheet.getDataRange();
var orders = range.getValues();

for (var i = 1; i < orders.length; i++) {
var row = orders[i];
var status = row[1];
var order = row[4];
var name = row[5];
var system = row[22];

if(system != SENT){
if(status.toString() === 'READY'){
orderSheet.getRange(i,23).setValue(SENT);
stitchSheet.appendRow([order,name]);
}
}
}
}

最佳答案

你的代码没问题,所以一定是某个地方有逻辑错误。我注意到您在 for 循环 1 中创建了 var i。我不知道这是有意还是无意,但在大多数编程语言中,数组的索引几乎总是以 0 开头,这意味着您将从工作表的第 2 行开始,而不是第 1 行。

查找逻辑错误

要查找逻辑错误,您需要了解如何在脚本编辑器中使用调试器控制台。

在下面我用星号标记的行上放置断点:

var ss = SpreadsheetApp.openById("12y85GmJ94s6k3213j2nGK8rFr0GOfd_Emfk8WHu_MUQ");
var stitchSheet = ss.getSheetByName("Sheet8");
var orderSheet = ss.getSheetByName("Sheet1");

var SENT = "SENT";

function getOrders() {

var range = orderSheet.getDataRange();
* var orders = range.getValues();

for (var i = 1; i < orders.length; i++) {
* var row = orders[i];
var status = row[1];
var order = row[4];
var name = row[5];
* var system = row[22];

if(system != SENT){
if(status.toString() === 'READY'){
orderSheet.getRange(i,23).setValue(SENT);
stitchSheet.appendRow([order,name]);
}
}
}
}

启动调试器,它将在第一个断点处停止。检查 range 的值。展开 This 应该可以让您找到 orderSheetSENT (因为它们在函数之外并且应该在范围内)。如果不是,那么你这里就有问题了。

转到下一个断点并检查orders,它现在应该有一个数组的数组。您可以检查是否获得了正确的值,如果没有,请跳到下一个断点并查看 row 是什么。

关于javascript - GAS 电子表格通过标记为 "SENT"来避免重复,不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445444/

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