You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Intercom API请求转换为Google Apps Script并导出数据至表格

用Google Apps Script整合Intercom API导出数据到Google Sheet

整体流程说明

三个API请求是链式依赖关系:先创建导出任务拿到job_identifier,再轮询任务状态直到完成获取下载URL,最后下载ZIP解析成CSV导入表格。


1. 传递job_identifier到第二个请求

直接把第一个请求返回的job_identifier拼到查询状态的API URL里就行。注意导出任务不是即时完成的,必须轮询检查状态,直到任务标记为completed再进入下一步。

示例代码(衔接你已有的创建任务代码):

function runIntercomExport() {
  // 第一步:创建导出任务(你已有的Tanaike提供的代码)
  const apiKey = "你的Intercom API密钥";
  const createExportUrl = "https://api.intercom.io/export/content/data";
  const createOptions = {
    method: "post",
    headers: {
      "Authorization": `Bearer ${apiKey}`,
      "Accept": "application/json",
      "Content-Type": "application/json"
    },
    payload: JSON.stringify({
      // 替换成你的导出参数,比如数据模型、时间范围
      model: "conversation",
      created_at: { gt: "2024-01-01T00:00:00Z" }
    })
  };
  const createResponse = UrlFetchApp.fetch(createExportUrl, createOptions);
  const createData = JSON.parse(createResponse.getContentText());
  const jobId = createData.job_identifier; // 提取job_identifier

  // 第二步:轮询任务状态
  const checkStatusUrl = `https://api.intercom.io/export/content/data/${jobId}`;
  const checkOptions = {
    headers: {
      "Authorization": `Bearer ${apiKey}`,
      "Accept": "application/json"
    }
  };
  let jobStatus = "processing";
  let downloadUrl = "";
  // 轮询间隔30秒,最多尝试20次(可按需调整)
  for (let i = 0; i < 20; i++) {
    const statusResponse = UrlFetchApp.fetch(checkStatusUrl, checkOptions);
    const statusData = JSON.parse(statusResponse.getContentText());
    jobStatus = statusData.status;
    if (jobStatus === "completed") {
      downloadUrl = statusData.download_url;
      break;
    }
    Utilities.sleep(30000); // 等待30秒再查询
  }
  if (jobStatus !== "completed") throw new Error("导出任务超时未完成");

2. 处理ZIP文件并导入Google Sheet

拿到下载URL后,先下载ZIP包,用Apps Script自带的工具解压,读取里面的CSV内容,最后写入指定工作表。

接上面的代码继续:

// 第三步:下载ZIP并解析CSV
  const zipResponse = UrlFetchApp.fetch(downloadUrl, { headers: { "Authorization": `Bearer ${apiKey}` } });
  const zipBlob = zipResponse.getBlob();
  const zipFile = Utilities.unzip(zipBlob);
  
  // 假设ZIP内只有一个CSV文件,直接取第一个
  const csvBlob = zipFile[0];
  const csvContent = csvBlob.getDataAsString(); // 若有乱码可指定编码,比如"UTF-8"
  
  // 将CSV转为二维数组,方便写入表格
  const csvData = Utilities.parseCsv(csvContent);
  
  // 写入Google Sheet(替换成你的Sheet ID和工作表名称)
  const sheet = SpreadsheetApp.openById("你的Sheet ID").getSheetByName("导出数据");
  sheet.clearContents(); // 清空原有内容(可选操作)
  sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}

关键注意点

  • API权限:确保你的Intercom API密钥拥有export相关权限,否则会返回权限错误
  • 轮询参数:数据量越大,导出耗时越长,可根据实际情况调整轮询间隔和最大尝试次数
  • 数据清洗:导出的CSV可能包含冗余字段或格式问题,可在写入表格前添加数据清洗逻辑

内容的提问来源于stack exchange,提问作者Damien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:57:14