【问题标题】:Google Apps Script deleteCompanyField()Google Apps 脚本 deleteCompanyField()
【发布时间】:2018-09-03 13:38:46
【问题描述】:

我正在尝试删除我的 Google 通讯录中的所有公司/职位。以下代码删除了除一个之外的所有内容。有人可以帮忙吗?

for (var i = 0; i < noComps; i++) {
 var cComp = contacts.getCompanies()[i];
 var r = cComp.deleteCompanyField();
}

我的contacts 变量和noComps 已预定义,此处未列出。

基本上,我要做的是在 Google 表格中直接更新并将其同步到 Google 通讯录。我已经建立了onEdit(e) 函数。

【问题讨论】:

  • noComps 变量应该用noComps = contacts.length; 分配一个数字
  • @SandyGood 感谢您的回复。我确实设置好了。
    var noComps = contacts.getCompanies().length;&lt;br/&gt; for(var i = 0; i &lt; noComps; i++){&lt;br/&gt; var cComp = contacts.getCompanies()[i];
    `ui.alert('公司名称:' + cComp.getCompanyName() + '标题:' + cComp. getJobTitle());
    ` var r = cComp.deleteCompanyField();
    ` //ui.alert('删除结果:' + r);
    ` }
    ` return;
    对不起,我不知道如何格式化这里的代码行..
  • @Will 扩展代码不属于 cmets,因此不支持丰富的格式化。
  • 使用反引号来格式化 cmets 中的代码。 https://meta.stackoverflow.com/editing-help#comment-formatting

标签: google-apps-script google-contacts-api


【解决方案1】:

您的代码需要如下结构:

function test() {
  var contacts = ContactsApp.getContactsByName('John Doe');

  var companies,i,j,L,nmbrOfCompanies,thisCompany;

  L = contacts.length;

  for (i = 0; i < L; i++) {
    companies = contacts[i].getCompanies();

    nmbrOfCompanies = companies.length;

    for (j = 0; j < nmbrOfCompanies; j++) {
      thisCompany = companies[j];
      //Logger.log('thisCompany: ' + thisCompany);
      thisCompany.deleteCompanyField();
    }
  }

}

每个联系人可以有多个公司。所以,你需要一个嵌套循环。

【讨论】:

    【解决方案2】:

    您有一个简单的突变+迭代问题:在您对联系人公司的循环中,您请求他们的公司。但是,您随后删除了一个条目,因此下一个呼叫将跳过本应是下一个的公司。相反,您应该向后迭代,并避免在循环中重新获取迭代对象:

    var comps = contact.getCompanies();
    var i = comps.length;
    while (i > 0) {
      var comp = comps[--i];
      ...
      comp.deleteCompanyField();
    }
    

    另一种方法是使用forEach 数组函数:

    contact.getCompanies().forEach(function (comp, i, allTheirCompanies) {
      ...
      comp.deleteCompanyField();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 2017-03-31
      • 2013-07-23
      • 2013-12-02
      相关资源
      最近更新 更多