【问题标题】:Get IP Address on Google Form submission在提交 Google 表单时获取 IP 地址
【发布时间】:2020-09-11 02:31:46
【问题描述】:

我正在寻找一个脚本来捕获提交表单的人的 IP 地址。我最终在响应表中写了这段代码:

/*
 * Global Variables
 */
// Form
var formId = 'FromID';
// Sheet
var sheetName = 'Form Responses 1';
var columnName = 'IP Address';

// Responses starting row
var startRow = 2;

function UploadIPAddress_FromSheet(){
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
    var columnIndex = headers[0].indexOf(columnName);
    var data = sheet.getDataRange().getValues();

    var form = FormApp.openById(formId);

    for(var i = startRow-1; i < data.length; i++) {
        if(data[i][0] && !data[i][columnIndex]) {
          
            var ip = JSON.parse(UrlFetchApp.fetch('https://api6.ipify.org?format=json')).ip;
  
             sheet.getRange(i+1, columnIndex+1).setValue(ip);
        }
    }
}

这可以按预期工作,因为当我手动运行脚本时,它会用我的 IP 地址填充最后一个响应行的“IP 地址”列。但是,当我提交带有触发器以运行脚本的表单时,它会执行相同的操作,但使用的是 Google 服务器 IP 地址。

知道如何通过表单提交实现第一个输出吗?

非常感谢

【问题讨论】:

标签: javascript


【解决方案1】:

很遗憾,这是不可能的。您必须研究替代表单服务。

【讨论】:

  • 感谢您的回复。即使没有提交表单,也会发生同样的事情。我有这个简单的脚本:function GetIP(){return ip = JSON.parse(UrlFetchApp.fetch('api6.ipify.org?format=json')).ip;}。当我为工作表中的单元格调用此函数时,我得到服务器的 IP 地址而不是我的。有没有办法获取我的 IP 地址,或者这也不可能。非常感谢。
  • @Sabba 你在jsfiddle.net/Lgov48an/1 上看到你的IP了吗?
  • 是的,我愿意。感谢您的回复。
  • 你问我我的地址是否使用你的公式显示,我回答说是的。这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2020-09-13
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 2014-03-29
  • 2012-09-17
相关资源
最近更新 更多