2015-01-06 308 views
0

我很難找到一種方法來同步多個工作表到主電子表格。 對於我的測試,我有一個大的電子表格,在5個城市的地址。我正在嘗試爲每個城市創建電子表格,並且可以在任一工作表中更改數據時同步數據。 所以我會管理整體數據,並將5個電子表格中的每一個分配給其他人。這樣,他們可以更新無權訪問所有數據的工作表。使用內置查詢或導入區域功能的問題在於,如果用戶對「城市」電子表格進行了更改,則會因爲引用數據而打碎表單。同步多個谷歌電子表格(5 +)回到主谷歌電子表格

我在搜索後通過'Dev'找到了代碼。

var sourceSpreadsheetID = "ID HERE"; 
var sourceWorksheetName = "SHEET NAME HERE"; 
var destinationSpreadsheetID = "ID HERE"; 
var destinationWorksheetName = "SHEET NAME HERE"; 

function importData() { 
    var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID); 
    var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName); 
    var thisData = thisWorksheet.getDataRange(); 
    var toSpreadsheet = SpreadsheetApp.openById(destinationSpreadsheetID); 
    var toWorksheet = toSpreadsheet.getSheetByName(destinationWorksheetName); 
    var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(), thisData.getNumColumns()) 
    toRange.setValues(thisData.getValues()); 
} 

這個偉大的工程,因爲它拷貝了讓我做編輯的數據,但問題是我不能導入只是我想要的數據。如果我可以使用sql查詢,id可以例如選擇*哪裏城市='邁阿密',但我相信這是不可能的谷歌電子表格在此刻。

因此,我的下一個想法是使用此腳本並在子電子表格上設置過濾器。問題是,當它運行腳本時,它會將整個表單複製回來,如果5個用戶中的任何一個同時更新他們自己的電子表格,則會導致問題,因爲他們會覆蓋彼此的更改。 另一個想法是,因爲每個記錄都有自己的唯一ID#(我有一個名爲ID的列)有沒有辦法告訴活動電子表格更新主表中的行id = masterspreadsheet.id編輯?

任何幫助正確的方向將不勝感激。

+0

可以在谷歌電子表格實際使用查詢,但它是動態的,在數據​​總是被更新:https://support.google.com/docs/answer/3093343?hl=恩。這是否解決您的問題? – Kriggs

+0

我從單獨的電子表格中提取數據,因此我無法使用Query函數本身。我必須做一個引用數據的導入範圍。所以不幸的是,這對我不起作用。 – User125

回答

0

您可以導入所有數據,然後在數組上使用JavaScript sort()方法。

var thisData = thisWorksheet.getDataRange(); 

var arryOfData = thisData.getValues(); 
Loggger.log('arryOfData: ' + arryOfData[0]); 

var dataSorted = thisData.sort(); 
Logger.log('dataSorted: ' + dataSorted[0]); 

運行代碼,然後查看LOG以查看返回到變量中的內容,作爲調試代碼的方式。

然後,您可以使用indexOf()slice()刪除不需要的部分數據。

+0

這實際上是一個好主意。爲了更進一步,我仍然堅持將截斷數據更新回主電子表格的問題。使用我目前擁有的代碼,它只會複製整個表格而不僅僅是更改。有關於此的任何想法? – User125

0

解決方案爲那些誰擁有使用多個谷歌表和Excel:

我有用戶編輯在谷歌自己駕駛的文件。我的主表將所有必要的信息合併爲一個。 Google在Google表單中內置命令以從其他表單中的特定位置獲取數據。 創建一個谷歌牀單主文檔,將所有相關信息提取到1個文檔中。這可以保護您不想查詢的所有其他信息,並將其全部納入Google表單。

(爲了保護隱私,我改了一些字母,這只是一個例子:) 把這個單元格放在你要導入數據的地方,即A1。 它將從名爲Totals的表中導入數據,從A1到C2。

= IMPORTRANGE( 「1l9jPPp5ylfgAjO_PDymXSR_ivfwHG1j7Ax-UASi6UYc」, 「彩民!A1:C2」)

= IMPORTRANGE( 「投入 - 您 - 文件琴鍵這裏」,「PutSheetNameHere把範圍或單個細胞!這裏。「)

我的主表已發佈,所以我可以使用查詢將其導入到Excel中。

您從URL獲取文檔密鑰。打開您要從中導入數據的谷歌板和URL應該是這樣的:

https://docs.google.com/spreadsheets/d/1l9jPPp5ylfgAjO_PFymXSR_ivfwHG1j7Ax-UASi6UYc /編輯#GID = 0

在該文件中的設置,你可以使它檢查和更新每一分鐘。

THEN:您可以在Excel中執行1個網頁查詢。

OR

如果你只使用出類拔萃,只是做一個谷歌共享驅動器或共享文件到您的驅動器。在您的計算機上安裝Google Drive,然後像平常一樣引用驅動器上的excel文件。谷歌驅動器將保持更新。最簡單的解決方案是讓每個人都使用excel,然後將文件共享到您的計算機同步驅動器。之後,只需使用其他excel文件的常規引用,這些文件將位於驅動器上的不變位置。

http://www.officetooltips.com/excel/tips/referencing_cells_outside_the_worksheet.html