Best Google Sheets Phone Validation API & Email Verification Integration 2025

The #1 Google Sheets phone validation integration and email verification solution in 2025. Transform your spreadsheets with enterprise-grade phone number validation, advanced email verification, real-time HLR lookup, carrier detection, and intelligent spam checks. Automate data quality workflows with Google Apps Script and seamless formula integration. Trusted by 15,000+ Google Sheets users worldwide with 99.9% accuracy rate and instant bulk validation.

8 Minute Setup
Bulk Validation
Best in 2025
Custom Functions
99.9%
Accuracy Rate
5M+
Records Validated
<200ms
Response Time
240+
Countries

Instant Formula Integration (2025)

Use custom functions like =VALIDATEPHONE() and =VALIDATEEMAIL() directly in your spreadsheet cells. Real-time validation with automatic updates and intelligent caching for optimal performance.

Bulk Validation Engine (2025)

Process thousands of records simultaneously with advanced batch processing. Smart rate limiting, progress tracking, and automatic resume on Google Sheets platform.

Enterprise Security (2025)

Enterprise-grade security compliant with Google Workspace security standards. GDPR and CCPA compliant data processing with audit trails and encryption.

Why Google Sheets Phone Validation API in 2025?

Market Leadership in 2025

  • 2 billion+ active users - Google Sheets dominates collaborative spreadsheet market
  • Advanced AI features - Smart Fill, Explore, and machine learning integrations
  • Real-time collaboration - Industry-leading simultaneous editing capabilities
  • Enterprise security - Google Workspace security and compliance standards

2025 Performance Advantages

  • 99.9% accuracy rate - Most accurate phone validation API in 2025
  • Sub-200ms response - Fastest validation times in the industry
  • 240+ countries covered - Global phone number validation coverage
  • 15,000+ customers - Trusted by enterprises and SMBs worldwide

Why Our Google Sheets Integration Leads in 2025

Our Google Sheets phone validation API integration combines the power of Google's collaborative platform with industry-leading validation accuracy. Built specifically for 2025's data quality requirements, our solution offers seamless formula integration, bulk processing capabilities, and enterprise-grade security.

✓ Enterprise Security Certified✓ GDPR Compliant✓ 99.9% SLA

Why 1lookup is the #1 Choice for Google Sheets Phone Validation in 2025

The Most Advanced Phone Validation API for Google Sheets Users

While many validation services exist, 1lookup is the only solution specifically optimized for Google Sheets with native formula integration, bulk processing capabilities, and enterprise-grade accuracy that scales with your business.

99.9% Accuracy

Industry-leading validation accuracy powered by real-time HLR lookup and advanced carrier network integration updated for 2025.

Native Functions

Custom Google Sheets functions like =VALIDATEPHONE() and =VALIDATEEMAIL() that work seamlessly with your existing formulas and workflows.

Bulk Processing

Process thousands of records simultaneously with intelligent batching, progress tracking, and automatic resume capabilities.

What Makes 1lookup Different for Google Sheets

Real-time HLR Validation:Direct carrier network queries for 100% accurate line status
Intelligent Caching:Smart result caching to optimize Google Sheets performance
Global Coverage:240+ countries with local format validation and carrier detection
Apps Script Ready:Pre-built Google Apps Script templates for advanced workflows
Error Handling:Graceful error handling with detailed validation failure reasons
Enterprise Support:Dedicated Google Workspace specialists available 24/7
Trusted by 15,000+ Google Sheets Users

Join thousands of businesses who've transformed their data quality with 1lookup's Google Sheets integration. Start validating your data today with 1,000 free validations.

Complete Google Sheets Setup Guide (2025)

Method 1: Custom Functions (Recommended for 2025)

The fastest way to get started with phone and email validation in Google Sheets. Set up custom functions in just 8 minutes.

Step 1: Get Your API Key

Sign up for your free 1lookup account and get your API key.

Step 2: Open Google Apps Script

In your Google Sheet, go to Extensions → Apps Script

// Open Google Sheets → Extensions → Apps Script
// This will open the Google Apps Script editor in a new tab

Step 3: Add Custom Functions

Copy and paste this code into the Apps Script editor:

/**
 * 1lookup Google Sheets Integration - 2025 Edition
 * Validate phone numbers and emails directly in your spreadsheet
 */

const API_KEY = 'your_api_key_here'; // Replace with your actual API key
const BASE_URL = 'https://api.1lookup.com/v1';

/**
 * Validate a phone number
 * @param {string} phoneNumber The phone number to validate
 * @param {string} countryCode Optional country code (e.g., "US", "GB")
 * @return {object} Validation results including carrier, spam score, and more
 * @customfunction
 */
function VALIDATEPHONE(phoneNumber, countryCode = '') {
  if (!phoneNumber) return 'Please provide a phone number';
  
  try {
    const url = `${BASE_URL}/phone?phone=${encodeURIComponent(phoneNumber)}&country=${countryCode}`;
    const response = UrlFetchApp.fetch(url, {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      }
    });
    
    const data = JSON.parse(response.getContentText());
    
    if (data.success) {
      return {
        valid: data.data.valid,
        formatted: data.data.formatted_number,
        carrier: data.data.carrier,
        type: data.data.line_type,
        country: data.data.country,
        spam_score: data.data.spam_score,
        risk_level: data.data.spam_score > 70 ? 'HIGH' : data.data.spam_score > 30 ? 'MEDIUM' : 'LOW'
      };
    } else {
      return `Error: ${data.message}`;
    }
  } catch (error) {
    return `API Error: ${error.toString()}`;
  }
}

/**
 * Validate an email address
 * @param {string} email The email address to validate
 * @return {object} Validation results including deliverability and risk scores
 * @customfunction
 */
function VALIDATEEMAIL(email) {
  if (!email) return 'Please provide an email address';
  
  try {
    const url = `${BASE_URL}/email?email=${encodeURIComponent(email)}`;
    const response = UrlFetchApp.fetch(url, {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      }
    });
    
    const data = JSON.parse(response.getContentText());
    
    if (data.success) {
      return {
        valid: data.data.valid,
        deliverable: data.data.deliverable,
        domain: data.data.domain,
        disposable: data.data.disposable,
        role_account: data.data.role_account,
        risk_score: data.data.risk_score,
        quality: data.data.risk_score < 30 ? 'HIGH' : data.data.risk_score < 70 ? 'MEDIUM' : 'LOW'
      };
    } else {
      return `Error: ${data.message}`;
    }
  } catch (error) {
    return `API Error: ${error.toString()}`;
  }
}

/**
 * Get phone number spam score only
 * @param {string} phoneNumber The phone number to check
 * @return {number} Spam score from 0-100
 * @customfunction
 */
function PHONESPAMSCORE(phoneNumber) {
  const result = VALIDATEPHONE(phoneNumber);
  return typeof result === 'object' ? result.spam_score : 'Error';
}

/**
 * Check if phone number is valid
 * @param {string} phoneNumber The phone number to validate
 * @return {boolean} True if valid, false otherwise
 * @customfunction
 */
function ISVALIDPHONE(phoneNumber) {
  const result = VALIDATEPHONE(phoneNumber);
  return typeof result === 'object' ? result.valid : false;
}

/**
 * Check if email is deliverable
 * @param {string} email The email address to check
 * @return {boolean} True if deliverable, false otherwise
 * @customfunction
 */
function ISDELIVERABLEEMAIL(email) {
  const result = VALIDATEEMAIL(email);
  return typeof result === 'object' ? result.deliverable : false;
}

Step 4: Save and Authorize

1. Replace 'your_api_key_here' with your actual API key

2. Save the script (Ctrl+S or Cmd+S)

3. Run any function once to authorize the script

4. Grant the necessary permissions when prompted

Method 2: Bulk Processing Web App (Advanced)

For processing thousands of records efficiently with progress tracking and error handling.

Features

  • Process up to 10,000 records per batch
  • Real-time progress tracking
  • Automatic error handling and retry logic
  • Detailed validation reports

Google Sheets Automation Examples (2025)

Real-time Phone Validation

Validate phone numbers as users enter data, with automatic formatting and spam detection.

// In cell B2 (assuming phone number is in A2):
=VALIDATEPHONE(A2, "US")

// To get just the formatted number:
=VALIDATEPHONE(A2, "US").formatted

// To check if it's valid:
=ISVALIDPHONE(A2)

// To get spam score:
=PHONESPAMSCORE(A2)

Email Verification

Verify email deliverability and detect disposable or role-based accounts.

// In cell C2 (assuming email is in A2):
=VALIDATEEMAIL(A2)

// To check deliverability only:
=ISDELIVERABLEEMAIL(A2)

// To get email quality score:
=VALIDATEEMAIL(A2).quality

// To check if disposable:
=VALIDATEEMAIL(A2).disposable

Advanced Automation Workflow

Create a comprehensive data validation workflow that processes both phone and email data with intelligent routing.

/**
 * Advanced Validation Workflow
 * This example shows how to create a complete validation system
 */

function validateContactData() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getRange('A2:C1000'); // Adjust range as needed
  const values = dataRange.getValues();
  
  const results = [];
  
  for (let i = 0; i < values.length; i++) {
    const [name, phone, email] = values[i];
    
    if (!name && !phone && !email) break; // Stop at empty row
    
    let phoneResult = null;
    let emailResult = null;
    let status = 'pending';
    
    // Validate phone if provided
    if (phone) {
      phoneResult = VALIDATEPHONE(phone);
      if (typeof phoneResult === 'object') {
        if (!phoneResult.valid) {
          status = 'invalid_phone';
        } else if (phoneResult.spam_score > 70) {
          status = 'high_risk_phone';
        }
      }
    }
    
    // Validate email if provided
    if (email) {
      emailResult = VALIDATEEMAIL(email);
      if (typeof emailResult === 'object') {
        if (!emailResult.deliverable) {
          status = 'invalid_email';
        } else if (emailResult.disposable) {
          status = 'disposable_email';
        }
      }
    }
    
    // Set status to valid if both validations passed
    if (status === 'pending' && 
        (!phone || (phoneResult && phoneResult.valid && phoneResult.spam_score <= 70)) &&
        (!email || (emailResult && emailResult.deliverable && !emailResult.disposable))) {
      status = 'valid';
    }
    
    results.push([
      phoneResult ? phoneResult.formatted || phone : phone,
      emailResult ? emailResult.domain || '' : '',
      status,
      phoneResult ? phoneResult.spam_score || 0 : 0,
      emailResult ? emailResult.risk_score || 0 : 0
    ]);
  }
  
  // Write results to columns D-H
  if (results.length > 0) {
    const outputRange = sheet.getRange(2, 4, results.length, 5);
    outputRange.setValues(results);
    
    // Add headers if not present
    const headers = ['Formatted Phone', 'Email Domain', 'Status', 'Phone Risk', 'Email Risk'];
    sheet.getRange(1, 4, 1, 5).setValues([headers]);
  }
}

Advanced Google Sheets Formulas (2025)

Conditional Validation with ARRAYFORMULA

Process entire columns at once with conditional logic and error handling.

// Validate entire column with conditional logic
=ARRAYFORMULA(
  IF(A2:A="", "", 
    IF(LEN(A2:A)<10, "Too Short",
      IF(ISNUMBER(VALUE(REGEX(A2:A,"\d+"))), 
        VALIDATEPHONE(A2:A),
        "Invalid Format"
      )
    )
  )
)

// Email validation with domain filtering
=ARRAYFORMULA(
  IF(B2:B="", "",
    IF(COUNTIF(B2:B,"*@gmail.com")>0,
      "Personal Email",
      IF(VALIDATEEMAIL(B2:B).deliverable,
        "Valid Business Email",
        "Invalid Email"
      )
    )
  )
)

Smart Data Scoring System

Create a comprehensive scoring system based on phone and email validation results.

// Lead Quality Score (0-100)
=IF(AND(A2<>"", B2<>""),
  MAX(0, MIN(100,
    50 * ISVALIDPHONE(A2) +
    30 * ISDELIVERABLEEMAIL(B2) +
    20 * (1 - PHONESPAMSCORE(A2)/100) -
    25 * VALIDATEEMAIL(B2).disposable -
    15 * VALIDATEEMAIL(B2).role_account
  )),
  0
)

// Risk Assessment Formula
=IF(OR(PHONESPAMSCORE(A2)>70, VALIDATEEMAIL(B2).risk_score>80),
  "HIGH RISK",
  IF(OR(PHONESPAMSCORE(A2)>30, VALIDATEEMAIL(B2).risk_score>50),
    "MEDIUM RISK",
    "LOW RISK"
  )
)

// Contact Priority Ranking
=RANK(
  VALIDATEPHONE(A2).spam_score * -1 + 
  VALIDATEEMAIL(B2).risk_score * -1,
  $C$2:$C$1000,
  1
)

Dynamic Data Enrichment

Automatically enrich your data with carrier information, time zones, and geographic data.

// Extract carrier information
=VALIDATEPHONE(A2).carrier

// Get phone line type (mobile, landline, voip)
=VALIDATEPHONE(A2).type

// Extract email domain for company identification
=VALIDATEEMAIL(B2).domain

// Create formatted contact string
=CONCATENATE(
  "Phone: ", VALIDATEPHONE(A2).formatted, 
  " (", VALIDATEPHONE(A2).carrier, ") | ",
  "Email: ", B2, 
  " (", VALIDATEEMAIL(B2).domain, ")"
)

// Advanced filtering formula
=FILTER(A2:C1000, 
  (PHONESPAMSCORE(A2:A1000) <= 30) * 
  (VALIDATEEMAIL(B2:B1000).deliverable = TRUE) *
  (VALIDATEEMAIL(B2:B1000).disposable = FALSE)
)

Advanced API Integration (2025)

Complete Apps Script Integration

Full-featured integration with error handling, rate limiting, and advanced features.

/**
 * 1lookup Google Sheets Advanced Integration - 2025
 * Production-ready code with rate limiting and error handling
 */

class LookupAPI {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseUrl = 'https://api.1lookup.com/v1';
    this.rateLimitDelay = 100; // milliseconds between requests
    this.maxRetries = 3;
  }

  /**
   * Make authenticated API request with retry logic
   */
  makeRequest(endpoint, params = {}) {
    const queryString = Object.keys(params)
      .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
      .join('&');
    
    const url = `${this.baseUrl}/${endpoint}?${queryString}`;
    
    for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
      try {
        const response = UrlFetchApp.fetch(url, {
          method: 'GET',
          headers: {
            'Authorization': `Bearer ${this.apiKey}`,
            'Content-Type': 'application/json',
            'User-Agent': 'GoogleSheets/2025 (1lookup-integration)'
          },
          muteHttpExceptions: true
        });
        
        if (response.getResponseCode() === 200) {
          const data = JSON.parse(response.getContentText());
          Utilities.sleep(this.rateLimitDelay); // Rate limiting
          return data;
        } else if (response.getResponseCode() === 429) {
          // Rate limited, wait longer
          Utilities.sleep(1000 * attempt);
          continue;
        } else {
          throw new Error(`HTTP ${response.getResponseCode()}: ${response.getContentText()}`);
        }
      } catch (error) {
        if (attempt === this.maxRetries) {
          throw error;
        }
        Utilities.sleep(1000 * attempt);
      }
    }
  }

  /**
   * Validate phone number with full details
   */
  validatePhone(phoneNumber, countryCode = '') {
    try {
      const params = { phone: phoneNumber };
      if (countryCode) params.country = countryCode;
      
      const result = this.makeRequest('phone', params);
      return result.success ? result.data : null;
    } catch (error) {
      console.error('Phone validation error:', error);
      return null;
    }
  }

  /**
   * Validate email with comprehensive checks
   */
  validateEmail(email) {
    try {
      const result = this.makeRequest('email', { email });
      return result.success ? result.data : null;
    } catch (error) {
      console.error('Email validation error:', error);
      return null;
    }
  }

  /**
   * Batch validate multiple contacts
   */
  batchValidate(contacts) {
    const results = [];
    const progressCell = SpreadsheetApp.getActiveSheet().getRange('Z1');
    
    for (let i = 0; i < contacts.length; i++) {
      const { phone, email } = contacts[i];
      
      // Update progress
      progressCell.setValue(`Processing ${i + 1}/${contacts.length}`);
      SpreadsheetApp.flush();
      
      const result = {
        index: i,
        phone: phone ? this.validatePhone(phone) : null,
        email: email ? this.validateEmail(email) : null
      };
      
      results.push(result);
      
      // Save intermediate results every 50 records
      if (i % 50 === 0) {
        this.saveIntermediateResults(results.slice(-50));
      }
    }
    
    progressCell.setValue('Complete!');
    return results;
  }

  /**
   * Save intermediate results to prevent data loss
   */
  saveIntermediateResults(results) {
    // Implementation for saving backup data
    const backupSheet = SpreadsheetApp.getActiveSpreadsheet()
      .getSheetByName('Backup') || 
      SpreadsheetApp.getActiveSpreadsheet().insertSheet('Backup');
    
    // Save results with timestamp
    const timestamp = new Date().toISOString();
    results.forEach((result, idx) => {
      backupSheet.getRange(result.index + 2, 1, 1, 4).setValues([[
        timestamp,
        JSON.stringify(result.phone),
        JSON.stringify(result.email),
        result.index
      ]]);
    });
  }
}

// Initialize API client
const api = new LookupAPI('your_api_key_here');

/**
 * Enhanced validation functions with caching
 */
function VALIDATEPHONE_ENHANCED(phoneNumber, countryCode = '', useCache = true) {
  const cacheKey = `phone_${phoneNumber}_${countryCode}`;
  
  if (useCache) {
    const cache = CacheService.getScriptCache();
    const cached = cache.get(cacheKey);
    if (cached) return JSON.parse(cached);
  }
  
  const result = api.validatePhone(phoneNumber, countryCode);
  
  if (result && useCache) {
    const cache = CacheService.getScriptCache();
    cache.put(cacheKey, JSON.stringify(result), 3600); // Cache for 1 hour
  }
  
  return result;
}

function VALIDATEEMAIL_ENHANCED(email, useCache = true) {
  const cacheKey = `email_${email}`;
  
  if (useCache) {
    const cache = CacheService.getScriptCache();
    const cached = cache.get(cacheKey);
    if (cached) return JSON.parse(cached);
  }
  
  const result = api.validateEmail(email);
  
  if (result && useCache) {
    const cache = CacheService.getScriptCache();
    cache.put(cacheKey, JSON.stringify(result), 3600);
  }
  
  return result;
}

Webhook Integration for Real-time Updates

Set up webhooks to receive real-time updates when validation status changes.

/**
 * Webhook receiver for real-time validation updates
 */
function doPost(e) {
  try {
    const data = JSON.parse(e.postData.contents);
    
    if (data.event === 'validation_update') {
      updateValidationStatus(data.phone || data.email, data.result);
    }
    
    return ContentService
      .createTextOutput(JSON.stringify({status: 'success'}))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    console.error('Webhook error:', error);
    return ContentService
      .createTextOutput(JSON.stringify({status: 'error', message: error.toString()}))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

function updateValidationStatus(identifier, result) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getDataRange();
  const values = dataRange.getValues();
  
  for (let i = 1; i < values.length; i++) {
    if (values[i][0] === identifier || values[i][1] === identifier) {
      sheet.getRange(i + 1, 10).setValue(JSON.stringify(result));
      break;
    }
  }
}

Best Practices & Optimization (2025)

Performance Optimization

  • Use caching to reduce API calls and improve speed
  • Implement rate limiting to stay within API quotas
  • Process data in batches for large datasets
  • Use ARRAYFORMULA for column-wide operations

Security Best Practices

  • Store API keys in Script Properties, not in code
  • Limit sheet sharing to authorized users only
  • Implement proper error handling and logging
  • Use triggers carefully to avoid infinite loops

Production-Ready Security Setup

/**
 * Secure API Key Management
 * Store your API key securely using Script Properties
 */

function setupSecureAPIKey() {
  // Run this once to store your API key securely
  const apiKey = 'your_actual_api_key_here';
  PropertiesService.getScriptProperties().setProperty('LOOKUP_API_KEY', apiKey);
  
  // Delete the API key from this function after running it
  console.log('API key stored securely!');
}

function getSecureAPIKey() {
  return PropertiesService.getScriptProperties().getProperty('LOOKUP_API_KEY');
}

/**
 * Secure validation function with proper error handling
 */
function SECURE_VALIDATEPHONE(phoneNumber, countryCode = '') {
  try {
    // Input validation
    if (!phoneNumber || typeof phoneNumber !== 'string') {
      throw new Error('Invalid phone number input');
    }
    
    // Sanitize input
    const cleanPhone = phoneNumber.replace(/[^+ds-()]/g, '');
    
    if (cleanPhone.length < 7 || cleanPhone.length > 20) {
      throw new Error('Phone number length invalid');
    }
    
    const apiKey = getSecureAPIKey();
    if (!apiKey) {
      throw new Error('API key not configured');
    }
    
    // Make secure API request
    const url = `https://api.1lookup.com/v1/phone?phone=${encodeURIComponent(cleanPhone)}&country=${countryCode}`;
    
    const response = UrlFetchApp.fetch(url, {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Content-Type': 'application/json',
        'User-Agent': 'GoogleSheets/Secure/2025'
      },
      muteHttpExceptions: true
    });
    
    if (response.getResponseCode() !== 200) {
      throw new Error(`API Error: ${response.getResponseCode()}`);
    }
    
    const data = JSON.parse(response.getContentText());
    
    // Log successful validation (without sensitive data)
    console.log(`Phone validation successful for country: ${countryCode}`);
    
    return data.success ? data.data : { error: data.message };
    
  } catch (error) {
    // Log error securely (without exposing sensitive data)
    console.error('Validation error:', error.message);
    return { error: error.message };
  }
}

/**
 * Rate limiting implementation
 */
class RateLimiter {
  constructor(maxRequests = 60, windowMs = 60000) {
    this.maxRequests = maxRequests;
    this.windowMs = windowMs;
    this.requests = [];
  }
  
  canMakeRequest() {
    const now = Date.now();
    this.requests = this.requests.filter(time => now - time < this.windowMs);
    
    if (this.requests.length >= this.maxRequests) {
      return false;
    }
    
    this.requests.push(now);
    return true;
  }
  
  getWaitTime() {
    if (this.requests.length === 0) return 0;
    const oldestRequest = Math.min(...this.requests);
    return Math.max(0, this.windowMs - (Date.now() - oldestRequest));
  }
}

// Global rate limiter instance
const rateLimiter = new RateLimiter(60, 60000); // 60 requests per minute

Troubleshooting Guide (2025)

Common Issues & Solutions

Error: "Script function not found"

The custom function isn't recognized by Google Sheets.

Solution:

  • Ensure you've saved the Apps Script code
  • Run function once manually to authorize
  • Check that function names match exactly
  • Wait 1-2 minutes for Google to recognize new functions

Error: "API Error: 401 Unauthorized"

Your API key is invalid or not properly configured.

Solution:

  • Verify your API key is correct
  • Check that the API key is active in your account
  • Ensure you're using the correct API endpoint
  • Make sure you have sufficient API credits

Error: "Loading..." appears indefinitely

The function is taking too long to execute or there's a timeout.

Solution:

  • Reduce the number of simultaneous API calls
  • Implement proper error handling and timeouts
  • Use batch processing for large datasets
  • Check your internet connection

Performance: Slow execution times

Functions are running slower than expected.

Solution:

  • Implement caching to reduce duplicate API calls
  • Use ARRAYFORMULA for processing multiple cells
  • Add rate limiting to avoid overwhelming the API
  • Process data in smaller batches

Debugging Tools & Techniques

/**
 * Debug helper functions for troubleshooting
 */

function debugValidation(input) {
  console.log('Debug input:', input);
  console.log('Input type:', typeof input);
  console.log('Input length:', input ? input.length : 'N/A');
  
  try {
    const result = VALIDATEPHONE(input);
    console.log('Validation result:', JSON.stringify(result, null, 2));
    return result;
  } catch (error) {
    console.error('Validation error:', error);
    return { error: error.toString() };
  }
}

function testAPIConnection() {
  try {
    const testPhone = '+1234567890';
    const result = VALIDATEPHONE(testPhone);
    
    if (result && typeof result === 'object') {
      console.log('API connection successful!');
      return 'Connected successfully';
    } else {
      console.log('API connection failed:', result);
      return 'Connection failed: ' + result;
    }
  } catch (error) {
    console.error('Connection test failed:', error);
    return 'Test failed: ' + error.toString();
  }
}

function checkAPIQuota() {
  try {
    const response = UrlFetchApp.fetch('https://api.1lookup.com/v1/account/usage', {
      headers: {
        'Authorization': `Bearer ${getSecureAPIKey()}`
      }
    });
    
    const data = JSON.parse(response.getContentText());
    console.log('API usage:', data);
    return data;
  } catch (error) {
    console.error('Quota check failed:', error);
    return { error: error.toString() };
  }
}

function clearCache() {
  try {
    CacheService.getScriptCache().removeAll();
    console.log('Cache cleared successfully');
    return 'Cache cleared';
  } catch (error) {
    console.error('Cache clear failed:', error);
    return 'Clear failed: ' + error.toString();
  }
}

Getting Help

Support Resources

When Contacting Support

  • • Include error messages and screenshots
  • • Provide sample data that's causing issues
  • • Mention your Google Sheets version
  • • Include your account email for faster resolution

Related Integrations

Discover other popular integrations that work great with Google

Notion

Medium
Popular

Integrate phone and email validation into your Notion databases for clean, verified contact data.

Setup: 15 minutes4.5/5
productivity
database
View Integration

Airtable

Easy
Popular

Validate and enrich contact data in your Airtable bases with real-time phone and email verification.

Setup: 10 minutes4.6/5
database
no-code
View Integration

Slack Team Communication

Easy
Popular

Get real-time phone validation notifications, fraud alerts, and team collaboration features directly in Slack channels.

Setup: 10 minutes4.7/5
team-communication
notifications
View Integration

Microsoft Teams

Easy
Popular

Microsoft-certified Teams integration with native bot support for real-time contact validation and collaboration security.

Setup: 10 minutes4.6/5
microsoft
teams
View Integration