Создать функцию в Google листе, чтобы получить мой внешний IP-адрес - PullRequest
5 голосов
/ 30 сентября 2019

Мне нужно создать функцию в листе Google, чтобы получить мой внешний (общедоступный) IP-адрес

Я пытался использовать функцию =IMPORTXML("https://api.myip.com","//body"), но этот метод показывает IP-адрес diffrint, а не мой внешний IP-адрес

Ответы [ 3 ]

6 голосов
/ 03 октября 2019

Следующее решение использует пользовательское меню в электронных таблицах -

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-адрес будет добавлен к выбранной ячейке.

Вы можете задаться вопросом, почему текущая ячейка была выбрана вместо активная ячейка - хорошоОтвет на этот вопрос заключается в том, что документ предпочитает, чтобы мы это делали :) Могу поспорить, что это сработает, даже если мы будем использовать активную ячейку (хотя я этого не проверял, но не вижу причины, по которой это не будет)

6 голосов
/ 30 сентября 2019

причина, по которой IP-адрес отличается, заключается в том, что вы получаете IP-адрес местоположения в Google Sheets, а не ваш IP

0

1 голос
/ 03 октября 2019

Невозможно использовать пользовательскую функцию Google Sheets или адрес на стороне сервера Google Apps Script, чтобы получить внешний IP-адрес, потому что соответствующий код выполняется на стороне сервера, а службы Google Apps Script не содержат методов для его получения, но выможет использовать код на стороне клиента для получения внешнего IP-адреса. Дополнительно, если требуется отправить IP-адрес в электронную таблицу, вы можете использовать это, используя google.script.run или API Google Sheets.

ПРИМЕЧАНИЕ. Ближайшие классы сценариев Служб Google: Сессия класса и Пользователь класса .

Связано

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...