我有一个电子表格绑定谷歌应用程序脚本,我想使用doGet函数来控制从外部发送的电子表格/邮件。基本上用户使用两个链接获取邮件onFormSubmit(我正在尝试使用我的代码的开发版本):
https://script.google.com/a/macros/..mydomain.../s/...myID.../dev?line=6&answer=ok
https://script.google.com/a/macros/..mydomain.../s/...myID.../dev?line=6&answer=no
该功能如下:
function doGet(e){
var sp = PropertiesService.getScriptProperties();
var ssId = sp.getProperty('thisSpreadsheet');
var sheetName = sp.getProperty('richiestaFerieSheetName');
Logger.log(ssId + ' ' + sheetName)
var ss = SpreadsheetApp.openById(ssId);
Logger.log(ss + ' ' + ss.getName());
var foglioRichiestaFerie = ss.getSheetByName(sheetName);
foglioRichiestaFerie.setActiveRange((foglioRichiestaFerie.getRange(e.parameter.line, 1)));
handleRequest(e.parameter.answer=='ok' ? true : false, false);
}
但是我得到了标题中提到的TypeError。
日志正确显示了ssId,sheetName,ss和ss.getName(),因此我无法理解为什么getSheetByName方法无法正常工作。
任何提示?
谢谢你的关注!
答案 0 :(得分:0)
您可以尝试下面的代码,看看会发生什么吗?
首先运行init
然后使用带参数的网址。
function init(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
PropertiesService.getScriptProperties().setProperty('richiestaFerieSheetName',ss.getSheets()[0].getName());
PropertiesService.getScriptProperties().setProperty('thisSpreadsheet',ss.getId());
}
function doGet(e){
var sp = PropertiesService.getScriptProperties();
var ssId = sp.getProperty('thisSpreadsheet');
var sheetName = sp.getProperty('richiestaFerieSheetName');
Logger.log(ssId + ' ' + sheetName)
var ss = SpreadsheetApp.openById(ssId);
Logger.log(ss + ' ' + ss.getName());
var foglioRichiestaFerie = ss.getSheetByName(sheetName);
foglioRichiestaFerie.setActiveRange((foglioRichiestaFerie.getRange(e.parameter.line, 1))).setValue('succes');
var answer = handleRequest(e.parameter.answer=='ok' ? true : false, false);
return ContentService.createTextOutput(answer).setMimeType(ContentService.MimeType.TEXT);
}
function handleRequest(result){
Logger.log('result = '+result);
return 'result is '+result;
}
使用此网址(我的测试网络应用): https://script.google.com/a/macros/insas.be/s/AKfycbxsbr6uBB1B22uYUipmSG-blLVrJ0JB_hmFBy3kLGt7ZQlI8pw/exec?line=6&answer=ok
您应该在浏览器中获得此结果:
和第一张中的这个