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

Google Apps Script获取IP异常:编辑器与工作表运行结果不同求助

问题描述

我使用的函数如下:

function getIPforApp() {
  var url = "http://api.ipify.org";
  var rtn = UrlFetchApp.fetch(url);
  Logger.log('this is rtn : '+ rtn);
  return (rtn);  
}

在脚本编辑器中直接运行该函数时,日志显示的是我的IP(XX.xxx.44.166),符合预期;但在工作表中调用该函数时,日志显示的IP为107.178.195.39或35.243.23.187。请问此方法是否有误,能否指引正确方向?

原因分析

这是正常现象,不存在方法错误,差异根源是运行环境不同:

  • 脚本编辑器直接运行时,请求由你的本地设备发起,走的是你的网络,所以返回你的公网IP。
  • 工作表中调用函数时,代码在谷歌云端服务器执行,UrlFetchApp的请求由谷歌服务器发出,返回的自然是谷歌服务器的公网IP,也就是你看到的那两个地址。
解决方向

如果你的需求是获取使用工作表的用户本地IP,当前方法做不到,因为谷歌表格自定义函数是云端执行的,无法直接获取用户本地网络IP。

要实现这个需求,只能换思路:

  • 用客户端脚本(比如嵌入表格的侧边栏/对话框,结合HTML+JS),在用户浏览器里发起IP请求,再把结果传回谷歌脚本。
  • 大致步骤:
    1. 写一个带JavaScript的HTML页面,在页面里调用ipify接口拿到用户IP。
    2. 通过谷歌脚本的HtmlService把这个页面作为侧边栏或对话框打开。
    3. 客户端JS拿到IP后,用google.script.run把数据传给服务器端脚本,再写入表格或记录日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:00:40