代码之家  ›  专栏  ›  技术社区  ›  Comp

PHP-gmailapi:尝试只收集最后100个线程

  •  1
  • Comp  · 技术社区  · 7 年前

    我只想从Gmail获得最后100个线程。我使用这个函数来收集线程,但我不知道为什么它总是获取所有线程,而不是最后100个线程。另外,我只想从收件箱里取。也许有一个小错误,但我看不出是什么错。希望有人能看出问题所在。

    function listThreads($service, $userId) {
      $threads = array();
      $pageToken = NULL;
      do {
        try {
          $opt_param = array(
        'maxResults' => 100,
        'labelIds' => 'INBOX'
      );
    
          if ($pageToken) {
            $opt_param['pageToken'] = $pageToken;
          }
          $threadsResponse = $service->users_threads->listUsersThreads($userId, $opt_param);
          if ($threadsResponse->getThreads()) {
            $threads = array_merge($threads, $threadsResponse->getThreads());
            $pageToken = $threadsResponse->getNextPageToken();
          }
        } catch (Exception $e) {
          print 'An error occurred: ' . $e->getMessage();
          $pageToken = NULL;
        }
      } while ($pageToken);
      foreach ($threads as $thread) {
        print 'Thread with ID: ' . $thread->getId() . '<br/>';
      }
    
      return $threads;
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Comp    7 年前

    我找到了解决办法。如果设置maxResults=>它将从一个令牌中收集100个线程,然后继续收集另一个令牌以获取下一个100。所以我要做的唯一一件事就是一旦线程被提取出来就中断。希望这对别人有帮助。

    function listThreads($service, $userId) {
      $threads = array();
      $pageToken = NULL;
      $opt_param = array(
        'maxResults' => 100,
        'labelIds' => 'INBOX'
      );
    
      do {
        try {
    
    
          if ($pageToken) {
            $opt_param['pageToken'] = $pageToken;
          }
          $threadsResponse = $service->users_threads->listUsersThreads($userId, $opt_param);
          if ($threadsResponse->getThreads()) {
            $threads = array_merge($threads, $threadsResponse->getThreads());
    
            //$pageToken = $threadsResponse->getNextPageToken();
            break;
          }
        } catch (Exception $e) {
          print 'An error occurred: ' . $e->getMessage();
          $pageToken = NULL;
          $x++;
        }
      } while ($pageToken);
      foreach ($threads as $thread) {
        print 'Thread with ID: ' . $thread->getId() . '<br/>';
      }
    
      return $threads;
    }
    
    推荐文章