循环中的变量需要if,else if,else语句,不能正常工作

时间:2017-04-29 06:35:46

标签: javascript google-apps-script

更新了组合循环,简化了一些代码,仍然无效。

for循环应该通过我的工作表中的特定列(data [n] [0]和data [n] [0] data [n] [1])并检查名称或电子邮件是否在它已经。如果出现任何一个,风扇将被设置为" isOldFan"。 (这都是在另一个大循环中,发生的第一件事是将vars设置为" new"开始)

if,else if,else动作应由状态扇确定。不幸的是,无论出于何种因素,每次都会跳过其他邮件并取消订阅并存档每封电子邮件。

我已经自己测试了循环,以及if的其他部分,否则它们似乎在部分工作......

// customer name or email on master sheet?
for(n=0;n<data.length;++n){
  var sheetName = data[n][0];
  var sheetEmail = data[n][1];
  if ((sheetName===fanName) || (sheetEmail===fanEmail)) {
    fan = "isOldFan";
  }
}

// the magic
if (dueDate === today) {
  if(fan==="isOldFan"){
    // existing fan unstar and archive
    GmailApp.unstarMessage(orderEmail);
    GmailApp.moveThreadToArchive(uncheckedOrderEmails[e]); 
  }else if(orderTotal > 70){
    // new VIP adds to sheet with "VIP"
    GmailApp.unstarMessage(orderEmail);
    ss.appendRow([fanName, fanEmail, restaurantName, "VIP"]);       
  }else{
    // new fan, add to sheet
    ss.appendRow([fanName, fanEmail, restaurantName]);
    GmailApp.unstarMessage(orderEmail);
    GmailApp.moveThreadToArchive(uncheckedOrderEmails[e]);
  }
}

我已经忽略了这个巨大的循环中的部分,它解析了框中的每封电子邮件。在大循环开始时(在每个要检查的新电子邮件之前),粉丝将重新设置为&#34; old&#34;。

1 个答案:

答案 0 :(得分:0)

关闭主题。我也没有看到任何错误,但您可以稍微简化此代码:

if (dueDate === today) {
    var isOldFan = data.some(row => row[0]===fanName || row[1]===fanEmail);

    if(isOldFan){
        // existing fan unstar and archive
        GmailApp.unstarMessage(orderEmail);
        GmailApp.moveThreadToArchive(uncheckedOrderEmails[e]); 
    }else if(orderTotal > 70){
         // new VIP adds to sheet with "VIP"
        GmailApp.unstarMessage(orderEmail);
        ss.appendRow([fanName, fanEmail, restaurantName, "VIP"]);       
    }else{
        // new fan, add to sheet
        ss.appendRow([fanName, fanEmail, restaurantName]);
        GmailApp.unstarMessage(orderEmail);
        GmailApp.moveThreadToArchive(uncheckedOrderEmails[e]);
    }
}