【发布时间】: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 地址。
知道如何通过表单提交实现第一个输出吗?
非常感谢
【问题讨论】:
-
Google 表单不支持跟踪提交的 IP 地址,Google 员工在this thread 中确认。
标签: javascript