2012-10-20 50 views
11

Tôi đang viết một tập lệnh google ở ​​đầu bảng tính. Tôi muốn triển khai nó dưới dạng ứng dụng web. Nó hiển thị một số giá trị. Thật không may, với mã hiện tại của tôi, google nhắc nhở tôi:Truy cập bảng tính trong Google Script

TypeError: Cannot call method "getSheetByName" of null.

Tôi không có ý tưởng trong trường hợp lỗi là.

Dưới đây là đoạn code

function doGet(e) { 
    var app = UiApp.createApplication().setTitle('Details'); 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    var dataFromCell = ss.getRange("B4").getValue(); 

    var mypanel = app.createVerticalPanel(); 
    var label = app.createLabel(dataFromCell); 

    app.add(mypanel); 
    app.add(label); 

    return app; 
} 

Trả lời

28

Trong webapps độc bạn không thể sử dụng getActiveSpreadsheet vì không ai đang sử dụng nó tích cực ... Sử dụng SpreadsheetApp.openById('ID') thay vào đó, bạn có thể lấy ID trong url của bảng tính như thế nào trong này Ví dụ:

https://docs.google.com/spreadsheet/ccc?key=0AnqSFd3iikE3d-------nZIV0JQQ0c1a3dWX1dQbGc#gid=0 

giữa key=#, tức là 0AnqSFd3iikE3d-------nZIV0JQQ0c1a3dWX1dQbGc

+0

Cảm ơn bạn rất nhiều !!!!!!!!!!!!! Nó hoạt động! Ví dụ tuyệt vời! – user1761850

+0

không cần phải sử dụng ID xem giải pháp của tôi ... –

+0

:) "Nếu bạn không chắc chắn thì tại sao downvote câu trả lời của tôi? Xin vui lòng xem xét lại ..." oh my god –

2

Không cần sử dụng ID, chỉ cần thử mã này (thay đổi mygooglelocation bằng tên Bảng tính và phạm vi ô của bạn. Làm việc rất tốt cho tôi với bản đồ google ...

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('mygooglelocation'); 
    var ss = SpreadsheetApp.getActive(); 
    var mylocationInfo = ss.getRange("A2:B4").getValues(); 
+1

Tôi sợ bạn hiểu nhầm câu hỏi ... đây là về các ứng dụng web chạy độc lập với bảng tính trong doGet/cấu trúc trả về. Nếu bạn muốn chứng minh quan điểm của mình, hãy hiển thị một ví dụ đầy đủ. –

+0

sau đó sẽ là sai lầm của tôi ... Tôi thấy nhiều lỗi trên internet về getRange (...) getValue() và tôi cho rằng đó là cùng một vấn đề ... –

+0

Nếu bạn không chắc chắn thì tại sao downvote câu trả lời của tôi? Vui lòng xem xét lại ... –

Các vấn đề liên quan