【问题标题】:Transient errors, Skipping blank cells with if clause瞬态错误,使用 if 子句跳过空白单元格
【发布时间】:2023-03-05 18:13:01
【问题描述】:

该程序应该遍历包含电子邮件地址的一系列电子表格单元格,然后将它们分配给联系人组。它非常慢并且不断给我一个“暂时性错误。稍后再试”。许多单元格是空的,我认为这就是原因。你能帮我加快速度,这样我就不会出现暂时性错误(在 20-30 个单元格之后)。我试图实现这个 if 子句,但它要么创建一个空白联系人(浪费我的配额)要么抛出一个空错误。

If 子句跳过空单元格:

if(cell != "" && cell != null){

我的脚本:

function addContactstoGroup() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName('NewEmails');

 var lastRow = sheet.getLastRow();
 var lastColumn = sheet.getLastColumn();



 var dataRange = sheet.getRange(2, 9, lastRow , lastColumn); //rows and columns start at 1, arrays start at 0.
 var data = dataRange.getValues();






 for (var i=1; i < lastRow; ++i){ //rows
 var groupHeaderRange = sheet.getRange(i+1,9);
 var groupHeader = groupHeaderRange.getValue();

 for(var j=1; j < lastColumn; ++j){ //columns

 var cell = data[i][j].getRange;

 if(cell != "" && cell != null){

 var groups = data[i][9];
 var cell = sheet.getRange(i+2,j+9);

 var contactGroup = data[i][0];
 var emailAddress = data[i][j];


 var contact = ContactsApp.createContact(null,null, emailAddress); // insert null   http://stackoverflow.com/questions/20600852/how-to-add-a-contact-without-a-name-in-gas
 var group = ContactsApp.getContactGroup(contactGroup);

 group.addContact(contact);//or should this just be emailAddress

 cell.clear();



};

groupHeaderRange.clear();

};





//}else{break;};



};

};

如果你能帮我解决问题,你会是我的英雄:

1) 瞬态错误

2) If 子句跳过空单元格并且不运行“ContactsApp.createContact”

var contact = ContactsApp.createContact(null,null, emailAddress); // insert null  

谢谢!!!我才写了几个月的代码,我不明白为什么会不断出现这种情况。

谢谢!

【问题讨论】:

  • 代码中的哪一行触发了瞬态错误?
  • 它位于内部循环中的某个位置。我相信詹姆斯可能已经用他的建议解决了这个问题……会更新。

标签: javascript performance google-contacts-api google-sheets-api


【解决方案1】:
  1. 尝试将var cell 更改为var cell = data[i][j];,然后您的 if 语句应该可以工作。

  2. 您的暂时性错误可能是由无效的电子邮件地址引起的。即不存在的电子邮件地址或您看不到的电子邮件地址中的一些空格。

您可以通过选择包含电子邮件地址的范围去查找替换来查找和删除空格。在查找字段中,输入 1 个空格,然后单击全部替换。

如果您可以提供一个带有虚拟电子邮件地址的虚拟电子表格,那么我们是否可以让您的代码更高效会更容易查看。

【讨论】:

  • 我认为使用 .getrange 只是修复了程序。它非常快速和正确地完成了所有事情。让我输入一些电子邮件地址,我会告诉你的!
  • 我在 if 子句中的 null 之后也有一个空格。我不断收到“空”错误。删除了空间并修复了它。仍然每隔一段时间就会出现一个短暂的错误。如果我看到模式,将发送更新。
  • if(cell != "" &amp;&amp; cell != null){ 添加Logger.log(cell); 这将告诉您哪个电子邮件地址可能导致问题。或者转到查看 -> 执行脚本并复制并粘贴最后五行,以便我查看错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多