Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么for循环不将变量作为值:

为什么for循环不将变量作为值:
EN

Stack Overflow用户
提问于 2017-03-05 14:01:56
回答 2查看 59关注 0票数 0

这个for循环确实有问题(我有问题吗?)

-Was使用GmailApp.getInboxThreads(k,max)k;但是这跳过了所有其他线程。(你能告诉我为什么吗?)

-Now --只有当k=0和max =100时才能工作。如果我尝试执行k=100和max =100,就会得到一组空白的数据。执行日志显示,对于k=100和max =100,完全跳过for循环。

谢谢你提前帮忙!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function newEmailAddressList(){

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName("NewEmails");
 var range = sheet.getRange("A3:Q");
 var varRange = sheet.getRange("A2:G2");
 var addrA = [];



 range.clearContent(); //May need to change this to my delete function to speed things up.

 var contact = ContactsApp.getContacts();       //var contact = ContactsApp.getContacts();

 //////////

  for(var i = 0; i < contact.length; i++){      //for(var i = 0;i < contact.length;i++){

   //var addrA = [];                             //var addrA = []; This can't be here. It is not global or accessable if it is in this loop and the other global version doesn't access it apparently

   var addresses = contact[i].getEmails();     // var addresses = contact[i].getEmails();  

   for(var j = 0;j < addresses.length; j++){    //for(var j = 0;j < addresses.length;j++) {                           

      var address = addresses[j].getAddress();                //   s += addresses[j].getAddress() + br;

     addrA.push(address);                       //   
    }; 


}; /////////////////////AT THIS POINT CONTACTS ARRAY IS COMPLETE/////////////////////////

 var joinAddr = addrA.join();
 //var lowerAddr = joinAddr.toLowerCase();

 var startingEmail = sheet.getRange("C2").getValue();
 var numEmails = sheet.getRange("E2").getValue();

 var max = numEmails;



 for (var k = startingEmail; k<max; ++k){

 var threads = GmailApp.getInboxThreads()[k]; //get max threads starting at most recent thread
 var messages = threads.getMessages()[0];

       var sndr; 
       var rcpnt;
       var srAry = [];



       var sndr = messages.getFrom().replace(/^.+<([^>]+)>$/, "$1"); //http://stackoverflow.com/questions/26242591/is-there-a-way-to-get-the-specific-email-address-from-a-gmail-message-object-in      
       var sndrLower = sndr.toLowerCase;

       var rcpnt = messages.getTo().replace(/^.+<([^>]+)>$/, "$1");
       var rcpntLower = rcpnt.toLowerCase;

       var cc = messages.getCc().replace(/^.+<([^>]+)>$/, "$1");
       var ccLower = cc.toLowerCase;

       //srAry.push(sndr);
       //srAry.push(rcpnt);
       //srAry.push(cc);



    var isIn = joinAddr.search(sndr || rcpnt);

     if(isIn == -1){

      var instance = k;
      var dat = messages.getDate();
      //var sndr = messages.getFrom();
      //var rcpnt = messages.getTo();
      var sub = messages.getSubject();
      var msg = messages.getPlainBody();


      var info = [instance,dat,sndr,rcpnt,cc,sub,msg];

       sheet.appendRow(info); //appendRow only works with sheet class not range class



};//else{ break;  };

};

//Browser.msgBox(("Here are your New Contacts from Emails "k" through "k + max"!"));

getContactGroups();

};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-05 14:37:04

我认为您在如何使用Gmail或如何运行for循环方面存在问题。

关于您的第一个问题,请查看Gmail API文档

您可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
getInboxThreads()
//OR 
getInboxThreads(start, max)
// Where start if the index of the first of thread and max is the maximum number of thread retrieved

所以当你这么做的时候: GmailApp.getInboxThreads(k,max)k;

检索范围为K到最大值的一个元素K

要获得所有线程,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var threads = GmailApp.getInboxThreads();
//OR
var threads = GmailApp.getInboxThreads(k, max);
//Where K is starting email and max maximum number of thread

您的循环必须从零开始,因为您正在处理上下文GmailApp之外的数组。因此:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var threads = GmailApp.getInboxThreads(k, max);
//threads is an array of threads range from 0 to max?
//Don't use k again!
for(var i=0; i<threads.length;i++){
 var currentThread = threads[i];
 //do what you need with the thread
}
票数 0
EN

Stack Overflow用户

发布于 2017-03-05 14:29:03

注意,for循环严格等于while循环:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//for (/*Init*/; /*Cond*/; /*Step*/) { /*Action*/ }
//stricty equal to :
/*Init*/;
while (/*Cond*/) {
    /*Action*/;
    /*Step*/;
}

因为k= max = 100,所以k < max返回false,所以您不会在循环中输入。如果要保持k= max = 100,则应该使用k <= max (小于或等于)或do-循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42614605

复制
相关文章
React为什么不将Vite作为默认推荐?
在React文档中,对于构建新的React应用,首推的方式是CRA(create-react-app)。
公众号@魔术师卡颂
2023/02/23
1.4K0
React为什么不将Vite作为默认推荐?
为什么编程里习惯使用 i、j、k 等作为循环变量?
i 可能是 integer 的简写,或者是 int 的简写。有人说是 iterator 的简写,这个有点牵强。早期教材中的示例都是以 i、k、j 作为循环变量,后来这样使用成为了一种习惯。
LIYI
2022/11/18
1.1K0
Django模板引擎中变量作为属性值调用
作者:matrix 被围观: 2,268 次 发布时间:2019-05-16 分类:Python 零零星星 | 4 条评论 »
HHTjim 部落格
2022/09/26
1.6K0
Django模板引擎中变量作为属性值调用
变量运算及循环变量
变量就像一个存储数据的盒子,每次设置变量的值,就会修改变量中存储的内容,就像是把盒子里旧的内容倒掉清空,再替换成新的内容。
楚客追梦
2022/11/11
1.2K0
为什么MySQL不建议使用NULL作为列默认值?
今天来分享一道美团高频面试题,5 分钟搞懂“为什么 MySQL 不建议使用 NULL 作为列默认值?”。
一行Java
2023/09/04
4190
为什么MySQL不建议使用NULL作为列默认值?
为什么MySQL不建议使用NULL作为列默认值?
blog.csdn.net/qq_30549099/article/details/107395521
肉眼品世界
2021/03/09
4.8K0
python3--变量,布尔值,用户交互 input,if语句,while循环
已经运行了第一个python程序,即:终端---->cmd----->python 文件路劲。回车搞定~
py3study
2018/08/02
1.6K0
ConcurrentHashMap为什么不支持null作为键对值(key-value)
HashEntry 类的 value 域被声明为 Volatile 型,Java 的内存模型可以保证:某个写线程对 value 域的写入马上可以被后续的某个读线程“看”到。在 ConcurrentHashMap 中,不允许用 unll 作为键和值,当读线程读到某个 HashEntry 的 value 域的值为 null 时,便知道产生了冲突——发生了重排序现象,需要加锁后重新读入这个 value 值。这些特性互相配合,使得读线程即使在不加锁状态下,也能正确访问 ConcurrentHashMap。
蓝胖
2020/04/11
8000
【Python】循环语句 ⑥ ( 变量作用域 | for 循环临时变量访问 | 分析在 for 循环外部访问临时变量的问题 | 在 for 循环外部访问临时变量的正确方式 )
如果需要在外部访问 for 循环的临时变量 , 建议将该 临时变量 预定义在 for 循环的外部 , 然后在后续的所有代码中可以访问该 临时变量 ;
韩曙亮
2023/10/11
7180
【Python】循环语句 ⑥ ( 变量作用域 | for 循环临时变量访问 | 分析在 for 循环外部访问临时变量的问题 | 在 for 循环外部访问临时变量的正确方式 )
matlabfor循环变量_matlab定义自变量区间
Matlab循环是不支持修改循环变量的,修改循环变量无效,等于没有修改。这是跟普通计算机语言最大的区别。另外,matlab的循环是包括头尾的,而一般语言都是包括头不包括尾,如python的循环,for i in range(5),是从0到4的,而不是从1到5。Matlab是从1开始的。
全栈程序员站长
2022/11/08
1.2K0
shell 循环变量传递问题
定义为环境变量没有用的,环境变量只是在子进程创建的时候可以从父进程复制到子进程,它无法实现从子进程往父进程传递,也不能在子进程运行期间从父进程获得新值。
全栈程序员站长
2022/09/15
9580
Sass变量插值
程序员 NEO
2023/09/29
1440
Sass变量插值
【lua菜鸟③】变量和循环
{lua的特点:①不需要分号结尾,但是支持分号啊,如果一行写多个语句就用它啊②没有花括号③函数也不需要声明类型,却和c++的语法极其类似}
福贵
2018/07/25
1.7K0
【lua菜鸟③】变量和循环
less变量插值
程序员 NEO
2023/09/29
2140
less变量插值
为什么局部变量需要显式设置初始化值
我们在编程中,无时无刻地都在于方法打交道,而在方法中,我们很难不使用局部变量,比如我们有下面的这样一段很简单的代码
技术小黑屋
2018/09/05
7400
【C++】拷贝构造函数调用时机 ② ( 对象值作为函数参数 | 对象值作为函数返回值 )
" 拷贝构造函数 " 又称为 " 赋值构造函数 " , 该类型构造函数有 4 种调用时机 ;
韩曙亮
2023/10/15
2480
【C++】拷贝构造函数调用时机 ② ( 对象值作为函数参数 | 对象值作为函数返回值 )
Python中一个for循环循环多个变量
首先,熟悉一个函数zip,如下是使用help(zip)对zip的解释。 Help on built-in function zip in module __builtin__: zip(...)     zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]     Return a list of tuples, where each tuple contains the i-th element     from each of the argument sequences.  The returned list is truncated
卡尔曼和玻尔兹曼谁曼
2019/01/22
5.1K0
C语言指针变量作为函数参数
自学气象人
2023/06/20
1170
C语言指针变量作为函数参数
Golang 中函数作为值与类型
在 Go 语言中,我们可以把函数作为一种变量,用 type 去定义它,那么这个函数类型就可以作为值传递,甚至可以实现方法,这一特性是在太灵活了,有时候我们甚至可以利用这一特性进行类型转换。作为值传递的条件是类型具有相同的参数以及相同的返回值。
张乘辉
2019/06/14
1.7K0
python基础----函数作为返回值
该文章讲述了Python函数作为返回值的相关内容。主要介绍了如何使用高阶函数将函数作为参数传递,以及如何使用闭包来创建匿名函数。同时,讲解了如何使用lambda函数来创建简短的匿名函数。
GavinZhou
2018/01/02
1.2K0

相似问题

为什么+=不将变量的值相加?

218

为什么不将count作为全局值?(赋值前引用的局部变量'count‘)

118

为什么gets不将值存储在变量中?

43

JavaScript不将变量写入数字(循环)

32

不将值存储到变量

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文