Обновить ячейку на основе сценария приложения параметра POST - PullRequest
1 голос
/ 11 июля 2020

Я делаю POST-запрос на URL

https://script.google.com/macros/s/{id}/exec?row=5

Запрос application/json, а тело запроса {"json": true}

это получено скриптом приложения, который публикуется как веб-приложение (любой, анонимный)

function doPost(e){

   var ss=SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
   var sheet = ss.getSheetByName("INGRESOSDEDINERO");
 
var params=JSON.stringify(e.postData.contents);
   params=JSON.parse(params);

   var myObj=JSON.parse(e.postData.contents);

   var row=myObj.row;


  var ss = SpreadsheetApp.getActivesheet();

  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));

}

Я пытаюсь передать номер строки, которую хочу изменить, в качестве параметра. Я хочу обновить ячейку, соответствующую номеру строки, столбцу 5 с фиксированным значением «КОНТАКТЫ». Он не работает, и при ведении журнала Stackdriver я не вижу журнал, несмотря на использование console.log

1 Ответ

1 голос
/ 12 июля 2020

Я считаю, что ваша цель следующая.

  • Вы хотите указать значение 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"

Примечание:

  • При изменении скрипта веб-приложений повторно разверните веб-приложения как новую версию. Таким образом, последний сценарий отражается в веб-приложениях. Будьте осторожны.

Ссылки:

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