web-gelistirme-sc.com

Google Apps Komut Dosyası üzerinden farklı Google E-Tablodaki verilere nasıl erişilir?

Google Siteme bir Google Apps Komut Dosyası yazıyorum ve bir Google E-Tablosunda 2 farklı sekmede bulunan verileri kullanmaya çalışıyorum. Belgelerden anladığımı düşündüğüm kadarıyla, sadece openById() yöntemini kullanarak SpreadsheetApp sınıfındaki tüm kullanılabilir yöntemleri Sites komut dosyasında kullanabilirim.

Her neyse, yapmaya çalıştığım şey bu.

function doGet(e) {

    var doc = SpreadsheetApp.openById(SPREADSHEET_ID_GOES_HERE).getActiveSheet();
    SpreadsheetApp.setActiveSheet(doc.getSheetId()[1]);

    //....
}

Hatayı alıyorum

SetActiveSheet yöntemi bulunamıyor (. (Satır 4)

Çalışmalarımı bu bağlantıdan çekiyorum: Google E-Tablolarda Veri Depolamak ve ayrıca Kullanıcı Arabirimleri Oluşturma altında listelenen Ui Hizmeti bölümü.

Bu iki satırda neyi yanlış yaptığımı gören var mı?

10

setActiveSheet, yalnızca tarayıcınızda açtığınız bir e-tablodaki bir sayfa olan UI tarafından görüntülenen e-tabloyla birlikte kullanılmalıdır.

SpreadsheetApp.openById ile verilerine erişmek için bir elektronik tablo açıyorsunuz, ancak tarayıcınızda açılmıyor. Kullanıcı arayüzü yok.

Bu yorumları https://developers.google.com/apps-script/class_spreadsheetapp?hl=es-ES#openById içinde buldum:

// The code below opens a spreadsheet using it's ID and gets the name for it.
// Note that the spreadsheet is NOT physically opened on the client side.
// It is opened on the server only (for modification by the script).
var ss = SpreadsheetApp.openById("abc1234567");

Bazı örnekler, komut dosyanızın e-tablonuzda çalıştığını varsayar. Bu sizin durumunuz değil, çünkü bir komut dosyasını kendi Kullanıcı Arabirimi olan bir hizmet olarak çalıştırıyorsunuzdur.

19

Sanırım @ megabyte1024, sözdizimi hatalarını ele alıyor, ancak @YoArgentina hakkındaki yorumunuza cevaben:

E-tablonun içinde çalışmayan bir servis aracılığıyla Ardından farklı sekmelerdeki verilere erişmenin bir yolunu biliyor musunuz?

Bu yardım eder mi?

var ss = SpreadsheetApp.openById(SPREADSHEET_ID_GOES_HERE);
var sheets = ss.getSheets();
// the variable sheets is an array of Sheet objects
var sheet1A1 = sheets[0].getRange('A1').getValue();
var sheet2A1 = sheets[1].getRange('A1').getValue();
5
AdamL

Bu iki çizgide en az bir sorun var. Birincisi, setActiveSheet method parametrelerinin Sheet sınıfı bir nesne olması ve getSheetId yönteminin bir tamsayı değeri döndürmesidir. Bu arada, bu yöntem (getSheetId) belgelenmemiş şeklindedir. SpreadsheetApp etkin bir elektronik tablo yoksa, ikinci sorun ortaya çıkabilir. Bu durumda "Lütfen önce etkin bir elektronik tablo seçin." hata. Etkin bir elektronik tablo ayarlamak için SpreadsheetApp.setActiveSpreadsheet yöntemini kullanın.

1
megabyte1024

Her sayfaya ayrı ayrı erişmeniz gerekir. 

var ss = SpreadsheetApp.openById(SPREADSHEET_ID_GOES_HERE);
var sheet = ss.getSheets()[0]; // "access data on different tabs"
ss.setActiveSheet(sheet);
0
James Ferreira