2016-06-29 36 views
0

我把一個簡單的jQuery/JavaScript彈出框放在一起。使用AJAX,我想從可公開訪問的Google Spreadsheet中的單元格中填充彈出窗口的內容。我可以做到這一點,並且我已經成功地從json格式的Google Spreadsheet中獲取數據。如何使用JavaScript/jQuery更改Google Spreadsheet中的活動工作表?

問題是我需要訪問的內容是在不同的'表'中。我不太瞭解Google文檔,也不知道如何去「激活」不同的工作表。我想要激活的工作表的名稱是'FG'。另一個是'SA'。

我發現了一個像下面這樣的JS函數,並將其放入我的代碼中,但在閱讀更多內容後,似乎該函數應該被放入Google Spreadsheet中,並轉到spreadsheet > Tools > Script editor...

function goToSheet(sheetName) { 
    var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); 
    SpreadsheetApp.setActiveSheet(sheet); 
} 

所以我把調用該函數與「表」我要加載的成功在我的JS AJAX調用內部的參數值的方式的名稱,功能不加載。

我的jQuery/JavaScript的在我的index.html文件如下:

/** 
* Redirect Function 
*/ 
var appRedirect = (function(){ 

    var global = {}; 
    var base = {}; 

    /** 
    * AJAX Processing Elements 
    * val: 'before','complete' 
    * ************************************************************* */ 
    global.ajaxProcessingElems = function (val) {} 



    /** 
    * Popup Init 
    * type: content,buttons 
    * pClass: unique selector name for popup 
    * maxWidth: the maximum width value for the popup 
    * pTitle: title of the popup 
    * data: the data passed to the popup 
    * appSiteUrl: the site application to direct user to 
    * ************************************************************* */ 
    global.popupModalInit = function (type, pClass, maxWidth, pTitle, data, appSiteUrl) { 

     var count=10; 
     var counter=setInterval(timer, 1000); // 1000 will run it every 1 second 
     var pTop; 
     var pLeft; 
     //var ss = data.getActiveSpreadsheet(); 
     //var activeSheet = ss.getSheets()[2]; 
     var oData = data; 
     var dataStructure = ''; 

     /* Function: Popup Close */ 
     $(document).on('click', '.modalpopupbackdrop,.modalpopup_title .close', function (e) { 
      e.preventDefault(); 

      // Fade Out Modal Popup 
      $('.modalpopupbackdrop').delay(75).fadeOut(125); 
      $('.modalpopup').animate({ opacity: '0' }, 150, function() { 

       // Remove from DOM 
       var removePopupFrame = setTimeout(function() { 
        $('.modalpopupbackdrop,.modalpopup').remove(); 
       }, 450); 

      }); 
     }); 


     /* Popup Structure */ 
     var pStructure = 

       // Modal Backdrop 
       '<div class="modalpopupbackdrop" aria-hidden="true"></div>' + 

       // Modal Frame 
       '<div class="modalpopup ' + pClass + '" style="max-width: ' + maxWidth + 'px;" aria-label="Popup Notice for Selected Site">' + 
        '<div class="modalpopup_inner">' + 

         // Title 
         '<div class="modalpopup_title">' + 

          // Close Button 
          '<a href="javascript:void();" class="close" title="Click to Close Popup" aria-label="close"></a>' + 

          // Modal Title 
          '<h3>' + pTitle + '</h3>' + 

         '</div>' + 

         // Data Wrapper 
         '<div class="modalpopup_content"></div>' + 

         // Cookie and Timer 
         '<div class="modalpopup_cookieandtimer">' + 

          // Cookie 
          '<div class="modalpopup_cookie">' + 
           '<label>' + 
            '<input type="checkbox" value="" name="" /> ' + 
            'Don\'t show this screen in the future.' + 
           '</label>' + 
          '</div>' + 

          // Timer 
          '<div class="modalpopup_counter">' + 
           'Autoredirecting in <span class="timer"></span>' + 
          '</div>' + 

         '</div>' + 

         // Buttons 
         '<div class="modalpopup_buttonholder">' + 
          '<a href="#" class="button btn-cancel">Cancel</a>' + 
          '<a href="#" class="button btn-help">Help</a>' + 
          '<a href="#" class="button btn-comment">Submit a Comment</a>' + 
          '<a href="#" class="button btn-home">Home</a>' + 
         '</div>' + 

        '</div>' + 
       '</div>'; 

     /* Append Popup to Body */ 
     $('body').append(pStructure); 

     // Calculate Negative Top and Left Margin to Position Popup 
     pTop = -($('.modalpopup').height()/2); 
     pLeft = -($('.modalpopup').width()/2); 

     // Assign Top and Left Margin Values 
     $('.modalpopup').css({ marginTop: pTop, marginLeft: pLeft }); 

     // Fade Popup In 
     $('.modalpopupbackdrop').fadeIn(125); 
     $('.modalpopup').delay(75).fadeIn(125); 

     // Counter Loop 
     function timer() { 
      count=count-1; 

      if (count <= 0){ 
       clearInterval(counter); 
       return; 

       // Direct User to Selected Site: 
       //window.location.href = appSiteUrl; 
      } 

      $('.timer').html(count + ' seconds.'); 
     } 
     timer(); 

     // Append Fetched Data to Popup 
     setTimeout(function(){ 

      console.log(oData); 

      dataStructure += '<h3>' + oData.feed.title.$t + '</h3>'; 

      // Append Data Output 
      $('.modalpopup_content').append(dataStructure); 

     },300); 
    } 



    /** 
    * Globe Initialization Settings 
    * - pTitle: 
    * - appUrl: 
    * - appData: 
    * ************************************************************ */ 
    global.egpInit = function (pTitle,appSiteUrl,appData) { 

     // Debug 
     console.log('Function egpInit Initialized'); 

     // Variables 
     var dataUrl = 'https://spreadsheets.google.com/feeds/list/' + appData + '/od6/public/values?alt=json-in-script'; 
     var errorMessage = 'An error occurred while initializing .egpInit.'; 

     console.log(dataUrl); 

     $.ajax({ 
      url: dataUrl, 
      method: 'POST', 
      dataType: 'jsonp', 
      beforeSend: function() { global.ajaxProcessingElems('before') }, 
      complete: function() { global.ajaxProcessingElems('complete') }, 
      success: function (data) { 

       //function goToSheet(sheetName) { 
        //var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); 
        //SpreadsheetApp.setActiveSheet(sheet); 
       //} 
       goToSheet("FG"); 

       global.popupModalInit('content', 'fireglobe', '700', pTitle, data, appSiteUrl); 

      }, 
      error: function() { 

       // Debug 
       console.log(errorMessage); 

      } 
     }); 

    } 

    return global; 

})(); 

我的HTML如下:

<ul> 
    <li> 
     <a href="javascript:appRedirect.egpInit('Popup 1','http://www.google.com/globe/','1YERueWgOB1TJ3HrtK4NnrnXCTDaZ5kmTS379Sozljbc');"> 
      Information 1 
     </a> 
    </li> 
    <li> 
     <a href="javascript:appRedirect.egpInit('Popup 2','https://www.yahoo.com/sa/','1YERueWgOB1TJ3HrtK4NnrnXCTDaZ5kmTS379Sozljbc');"> 
      Information 2 
     </a> 
    </li> 
</ul> 

我不知道如何表之間進行切換。現在它可以是靜態的,後來我可以添加它作爲我的功能參數:global.egpInit(pTitle,appSiteUrl,appData)

任何幫助,非常感謝。

+0

我發現這裏的一些鏈接在使提供了一些INSITE:http://stackoverflow.com/questions/19942619/query-specific-sheets-of-a-google -spreadsheet http://stackoverflow.com/questions/24531351/retrieve-google-spreadsheet-worksheet-json和外部鏈接:http://damolab.blogspot.com/2011/03/od6-a nd-finding-other-worksheet-ids.html不幸的是,關於這個問題沒有太多的信息。但是我發現的這些鏈接應該能夠幫助其他人解決相同的問題。 – Pegues

回答

0

對於用於訪問谷歌文檔的電子表格給定的URL,則可以使用下面的URL:

(僅實施例電子表格ID,並且不是功能性的)

https://spreadsheets.google.com/feeds/list/1YERue3gOB1TJ3Hr1K4Nnr8XCTDaZ5kBTS379Sozljbc/od6/public/values?alt=json-in-script 

在上述URL,值1YERue3gOB1TJ3Hr1K4Nnr8XCTDaZ5kBTS379Sozljbc引用您的電子表格ID,並且上面的URL中的值od6引用電子表格的第一個工作表(或默認工作表)。如果你在谷歌文檔電子表格有多個工作表,使用改變od6的值如下:

表2 - > worksheet_id = 2(因此od6將改爲2
表3 - > worksheet_id = 3(這od6將改爲3
等等

相關問題