HTTP Get в Google Spreadsheet, "e undefined"

Я пытаюсь использовать HTTP Get в таблице Google, чтобы иметь возможность создать URL к конкретной ячейке в листе.
Я искал, как это сделать, и я пытался использовать этот способ (GET часть), например.

Вот код, который я собрал:

function doGet(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Kunder");
  var row = e.parameter["row"];
  var col = e.parameter["col"];

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = sheet.getRange(row, col);
  SpreadsheetApp.setActiveSheet(sheet);
  SpreadsheetApp.setActiveRange(range);
}

И это пример URL:

https://docs.google.com/spreadsheets/d/[spreadsheet ID]/edit?row=5&col=1

Когда я запускаю скрипт, я получаю эту ошибку:

TypeError: Cannot read property "parameter" from undefined.

Я что-то не так делаю? Или это не возможно?

Заранее спасибо,
Oskar

РЕДАКТИРОВАТЬ
Это мой текущий код:

function doGet(e){
  var ss = SpreadsheetApp.openById("[id]");
  SpreadsheetApp.setActiveSpreadsheet(ss);
  var sheet = ss.getSheetByName("Kunder");
  var row = Number(e.parameter.row);
  var col = Number(e.parameter.col);

  var range = sheet.getRange(row, col);
  SpreadsheetApp.setActiveSheet(sheet);
  SpreadsheetApp.setActiveRange(range);
}

Код выполняется, но заканчивается

The script completed but did not return anything.

Я хочу открыть электронную таблицу, а затем установить активный диапазон из GET параметры.

1 ответ

Решение

Показанный вами URL недействителен.

Чтобы использовать этот тип сценария, вы должны развернуть сценарий как веб-приложение и использовать полученный.exec url с параметрами.

В конце это будет выглядеть так:

https://script.google.com/macros/s/AKfycbygwUwXXXXXXXXxJcKpBvsbflmnZ0Uqfu-JISWTZNvar32s3v_hl/exec?row=5&col=1

РЕДАКТИРОВАТЬ: не будет активного листа в этом контексте, используйте openById или же openByUrl вместо. Кроме того, значения, которые вы получаете для строки и столбца, являются строками, вы должны сделать их целыми числами и использовать обычный sheet.getRange(row,col) выбрать диапазон.

EDIT2:

этот URL:

https://script.google.com/macros/s/AKfycbwZbGW6E483BUplvLjCjNCXKjjiRorqzR9lruSydogeuU-YIvID/exec?row=1&col=1

и этот код:

function doGet(e){
  var ss = SpreadsheetApp.openById("1sbJXuEpL_88-u-Bm4QOCAM3SVddFwZKI0c1kxeRpcos");
  var sheet = ss.getSheetByName("Sheet1");
  var row = Number(e.parameter.row); 
  var col = Number(e.parameter.col); 
  var range = sheet.getRange(row, col);
  sheet.getRange(row, col).setValue('test ok')
}

пишет в этом листе: см. ячейку А1 или проверить в другой строке и столбце.

Вы действительно получите сообщение, что ничего не было возвращено, и это действительно так! мы ничего не возвращаем в этом коде, это всего лишь демонстрация;-)


РЕДАКТИРОВАТЬ 3: как уже упоминалось в комментариях, чтобы получить что-то, возвращаемое этой функцией, вы должны что-то перезапустить...

Вот пример:

function doGet(e){
  var ss = SpreadsheetApp.openById("1sbJXuEpL_88-u-Bm4QOCAM3SVddFwZKI0c1kxeRpcos");
  var sheet = ss.getSheetByName("Sheet1");
  var row = Number(e.parameter.row); 
  var col = Number(e.parameter.col); 
  var range = sheet.getRange(row, col);
  var value = sheet.getRange(row, col).getValue();
  sheet.getRange(row, col).setValue('test ok');
  var stringValue = value==''?'empty':value;
  Logger.log(stringValue);
  return ContentService.createTextOutput(stringValue).setMimeType(ContentService.MimeType.TEXT);
}
Другие вопросы по тегам