amm*_*eln 5 xpath google-sheets web-scraping google-apps-script google-sheets-formula
我需要在Google工作表中创建一个函数来获取我的外部(公共)IP地址
我尝试使用功能=IMPORTXML("https://api.myip.com","//body"),但是此方法显示的是不同的IP地址,而不是我的外部IP地址
以下解决方案利用了电子表格中的自定义菜单 -
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('My Menu')
.addItem('Get IP', 'getIP')
.addToUi();
}
function getIP() {
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().appendRow([JSON.parse(UrlFetchApp.fetch('https://api6.ipify.org?format=json')).ip]);
}
Run Code Online (Sandbox Code Playgroud)
您可以根据需要随意修改脚本以将所述IP放置在工作表中的任何位置。
另外,我使用的是IPv6地址,而不是IPv4,但是如果您要将其切换到IPv4,请将URL从代码替换为https://api.ipify.org?format=json-您可以在此处找到此资源。
我已经四处询问,这不能(以任何方式)通过自定义公式来实现,因为此类公式在各种包装中运行(不与任何客户端元素交互)。希望这可以帮助。
添加一种使用自定义菜单将外部IP插入特定单元格的方法(准确地说是当前单元格)-
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('My Menu')
.addItem('Get IP', 'getIP')
.addToUi();
}
function getIP() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var currentCell = sheet.getCurrentCell();
var ip = JSON.parse(UrlFetchApp.fetch('https://api6.ipify.org?format=json')).ip;
currentCell.setValue(ip)
}
Run Code Online (Sandbox Code Playgroud)
通过使用此方法,IP将被添加到已选择的单元格中。
您可能想知道为什么选择了当前单元格而不是活动单元格 -答案是因为文档更喜欢我们这样做:)我敢打赌,即使我们要使用活动单元格,它也可以工作(尽管未进行测试)但我不知道为什么不会这样)
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |