Свойство параметра объекта события не может быть «неопределено» при получении запроса, поскольку объект события всегда имеет следующую структуру (без каких-либо параметров запроса):
{
"parameter":{},
"contextPath":"",
"contentLength":-1,
"queryString":"",
"parameters":{}
}
Поскольку вы получаете сообщение, что параметр не определенвы, скорее всего, попытаетесь запустить doGet()
из редактора - вам не следует делать это, поскольку объект события создается только в том случае, если вы обращаетесь к URL-адресу из браузера или отправляете http-запрос программно (в последнем случае вообще не указывается запрос или опечатка)параметр не будет приводить и к этому сообщению).
Плюс, метод getActiveRange()
не принимает никаких аргументов, может быть, вы имели в виду setActiveRange()
?Если это так, вам также нужно обернуть каждую ссылку Range
в worksheet.getRange(yourRangeString)
(и рассмотреть возможность использования экономичного метода setValues(ArrayOfValues)
вместо диапазона "A"+cur_row+":D"+cur_row
).
В целом ваш код должен выглядеть следующим образом(минус тестовая функция getSelf ()):
/**
* Http GET request Trigger;
* @param {Object} event object;
* @returns {String} content to respond to getSelf();
*/
function doGet(e) {
var f = e.parameter.Fname;
var s = e.parameter.Lname;
doSomething(f,s);
//doGet() must return either HtmlOutput or TextOutput
var content = ContentService.createTextOutput(JSON.stringify({Fname:f,Lname:s}));
return content;
}
/**
* Test function to programmatically invoke doGet();
*/
function getSelf() {
//test query;
var query = '?Fname=alice&Lname=blue';
//getService().getUrl() returns script's public Url;
var resp = UrlFetchApp.fetch(ScriptApp.getService().getUrl()+query);
Logger.log(JSON.parse(resp));
}
/**
* Saves values to spreadsheet;
* @param {String} a first content to set;
* @param {String} b second content to set;
*/
function doSomething(a,b) {
var date = new Date();
var ss = SpreadsheetApp.openByUrl( yourSpreadUrl );
var ws = ss.getSheetByName( yourSheet );
var cur_row = ws.getLastRow() + 1;
var cur_rng = 'A'+cur_row+':D'+cur_row;
ws.setActiveRange(ws.getRange(cur_rng)).setValues([[cur_row,date,a,b]]);
}
Кстати, если вы хотите, чтобы другие могли иметь доступ к вашему текущему развертыванию, обязательно измените настройку публикации с «только я» на «кто-нибудь» или"любой, даже анонимный".