Я считаю, что ваша цель следующая.
- Вы хотите указать значение
row
, используя параметр запроса, например https://script.google.com/macros/s/{id}/exec?row=5
. - Из вашего скрипта,
- Вы хотите поместить значение
JSON.stringify(e)
в диапазон getRange(row,4)
на листе INGRESOSDEDINERO
электронной таблицы 16XSfRDLY1RdrUxHu...
. - Вы хотите поместить значение
CONTACTED
в диапазон getRange(row,4)
в 1-й вкладке активной электронной таблицы.
Для достижения вашей цели путем изменения вашего скрипта я хотел бы предложить следующую модификацию.
Точки модификации:
- Я думаю, что вы пытаетесь получить запрошенные значения в качестве параметра запроса в теле запроса. Я думаю, что это причина вашей проблемы.
- Когда
row
задается параметром запроса, например https://script.google.com/macros/s/{id}/exec?row=5
, вы можете получить row
из e
из doPost(e)
с помощью e.parameter.row
. - Например, когда вы запрашиваете веб-приложения с помощью скрипта, когда возвращается значение типа
return ContentService.createTextOutput("ok")
, ошибки не возникает. - Если вы хотите использовать
getActiveSheet()
, пожалуйста изменить getActivesheet
на getActiveSheet()
.
Шаблон 1:
В этом шаблоне row
используется в качестве параметра запроса, как ваша конечная точка.
Измененный сценарий:
function doPost(e){
var ss = SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var row = e.parameter.row; // <--- Modified
var ss = SpreadsheetApp.getActiveSheet(); // <--- Modified
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
return ContentService.createTextOutput("ok"); // <--- Added
}
Тестирование
При тестировании вышеуказанных веб-приложений с помощью команды curl вы можете использовать следующую команду curl.
curl -L -d "key=value" "https://script.google.com/macros/s/###/exec?row=5"
-
-d "key=value"
используется для запроса с помощью метода POST к doPost
в качестве фиктивного.
Шаблон 2:
В этом шаблоне row
используется как тело запроса как ваш скрипт.
Измененный скрипт 2:
function doPost(e){
var ss = SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var myObj=JSON.parse(e.postData.contents);
var row=myObj.row;
var ss = SpreadsheetApp.getActiveSheet(); // <--- Modified
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
return ContentService.createTextOutput("ok"); // <--- Added
}
Тестирование
Когда вы тестируете вышеуказанные веб-приложения с помощью команды curl, вы можете использовать fo llowing curl.
curl -L -d "{\"row\": 5}" "https://script.google.com/macros/s/###/exec"
Примечание:
- При изменении скрипта веб-приложений повторно разверните веб-приложения как новую версию. Таким образом, последний сценарий отражается в веб-приложениях. Будьте осторожны.
Ссылки: