谷歌驱动器电子表格脚本TypeError:无法调用方法" getDataRange"为null

时间:2014-07-29 01:00:57

标签: google-apps-script google-sheets

我读过许多人和我有同样的问题,但给他们的所有解决办法对我和其他许多人都不起作用。

当我将脚本部署为wep应用程序并进行更新时,通常会显示以下消息:

Deploy as Web app
....
current wep app url:
......
Test web app for your "latest code" (link)

如果我打开给出的链接("最新代码"),网络应用程序工作正常,但如果我手动打开网址,则说:

TypeError: Cannot call method "getDataRange" of null.

可能是授权的东西,但我不确定。

var HEADER_SIZE=1;                                                   
function myFunction() {

var ss = SpreadsheetApp.openById('1_LpdPfvDnWCrFJ0NcbfTaUtQtsbD8Ph8xCNA-pTLuY0');
var s = ss.getSheetByName('tablaSordos');
var data  = s.getDataRange().getValues();                      
var total =(data.length)-(HEADER_SIZE);                
posicion donde termina el Header
var il =  (total+HEADER_SIZE);                                      
var users = [];                                                     

for(i=sl; i<il; i++){
users.push(data[i]);                                           
 }                                                                 

Logger.log(users);

var usersData = [];

for(i in users){

var row           = users[i];
var nombre        = row[0];
var direccion     = row[1];
var lat           = row[2];
var long          = row[3];
var territorio    = row[4];
var localidad     = row[5];
var observaciones = row[6];

var userData= new toObject(nombre,direccion,lat, long, territorio, localidad, observaciones);    //creamos un objeto, con cada usuario
Logger.log(userData);
usersData[i] = userData;
}

return usersData;

}

function toObject(nombre, direccion, lat, long, territorio, localidad, observaciones){
this.nombre = nombre;
this.direccion = direccion;
this.lat = lat;
this.long = long;
this.territorio = territorio;
this.localidad = localidad;
this.observaciones = observaciones;
 }

function doGet() {
var datos = myFunction();
return ContentService.createTextOutput(JSON.stringify(datos)).setMimeType(ContentService.MimeType.JSON);
}

1 个答案:

答案 0 :(得分:1)

经过大量阅读后我发现了问题和解决方案:

1保存新版本的脚本

2选择选项:“在部署Web应用程序时将应用程序作为:me”执行。