我正在尝试在Google电子表格中使用HTTP Get
,以便能够为工作表中的特定单元格创建URL
。我一直在寻找如何做到这一点,我尝试过使用this way(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.
我做错了什么?或者不可能?
提前致谢,奥斯卡
EDIT
这是我目前的代码:
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
参数设置有效范围。
答案 0 :(得分:2)
您显示的网址无效。
要使用这种脚本,您必须将脚本部署为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
和这段代码:
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')
}
写入this sheet:查看单元格A1或测试另一行和列。
您确实会收到一条消息,表示没有返回任何内容,这确实是真的!我们不会在该代码中返回任何内容,这只是一个演示; - )
编辑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);
}