HTTP Get in Google Spreadsheet,“e undefined” [英] HTTP Get in Google Spreadsheet, "e undefined"

查看:146
本文介绍了HTTP Get in Google Spreadsheet,“e undefined”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在Google Spreadsheet中使用 HTTP Get ,以便能够创建一个 URL 特定单元格在一个表单中。
我一直在寻找如何去做,我尝试过使用 GET 部分)。



下面是我放在一起的代码:

 函数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 $ b $ pre $ https://docs.google.com/spreadsheets/d/ [电子表格ID] / edit?row = 5& col = 1

当我运行脚本时,出现以下错误: / p>

  TypeError:无法从undefined读取属性parameter。 

我是否做错了什么?或者是不可能的?



预先感谢,Oskar

编辑 >
这是我现在的代码:

pre $函数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);
}

代码将运行,但会以 $ b结束$ b

 脚本完成但没有返回任何内容。 

我想打开电子表格,然后从 GET


解决方案

您显示的网址无效。



要使用这种脚本,您必须将脚本部署为webapp,并使用带有参数的结果.exec url。



最后它看起来像这样:

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

编辑:在该上下文中将没有activeSheet,使用 openById openByUrl 来代替。
另外,你得到的行和列的值是字符串,你应该使它们成为整数并使用正常的 sheet.getRange(row,col)来选择一个范围。

EDIT2:



这个网址:

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

和这段代码:

 函数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')
}

此表中填写:看到单元格A1或在另一行和列上测试。

您确实会收到一条消息,说明什么都没有返回,实际上这是真的!我们不会在代码中返回任何东西,这只是一个演示; - )




编辑3:评论,为了得到这个函数返回的东西,你必须重新开始一些事情......



这是一个例子:

 函数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);
}


I'm trying to use HTTP Get in Google Spreadsheet, to be able to create a URL to a specific cell in a sheet.
I've been searching for how to do it, and I've tried using this way (the GET part), for example.

Here's the code I've put together:

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

And this is an example URL:

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

When I run the script I get this error:

TypeError: Cannot read property "parameter" from undefined.

I'm I doing something wrong? Or isn't it possible?

Thanks in advance,
Oskar

EDIT
This is my current code:

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 code runs but finishes with

The script completed but did not return anything.

I want to open the spreadsheet and then set the active range from the GET parameters.

解决方案

The url you show is not valid.

To use that kind of script you have to deploy the script as a webapp and use the resulting .exec url with parameters.

At the end it will look like this :

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

EDIT : there will be no activeSheet in that context, use openById or openByUrl instead. Also the values you get for row and columns are strings, you should make them integers and use a normal sheet.getRange(row,col) to select a range.

EDIT2 :

this url :

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

and this code :

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')
}

writes in this sheet : see cell A1 or test on another row and column.

You'll indeed receive a message that nothing was returned and this is actually true ! we don't return anything in that code, this is just a demo ;-)


EDIT 3 : as mentioned in the comments, to get something returned by this function you have to resturn something...

Here is an example :

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

这篇关于HTTP Get in Google Spreadsheet,“e undefined”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆