Следующее решение использует пользовательское меню в электронных таблицах -
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]);
}
Вы можете изменить скрипт для размещения указанного 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)
}
При использовании этого метода IP-адрес будет добавлен к выбранной ячейке.
Вы можете задаться вопросом, почему текущая ячейка была выбрана вместо активная ячейка - хорошоОтвет на этот вопрос заключается в том, что документ предпочитает, чтобы мы это делали :) Могу поспорить, что это сработает, даже если мы будем использовать активную ячейку (хотя я этого не проверял, но не вижу причины, по которой это не будет)