2015-01-06 3 views
0

여러 시트를 마스터 스프레드 시트에 동기화하는 방법을 찾는 데 어려움을 겪고 있습니다. 테스트를 위해 5 개 도시에 주소가있는 스프레드 시트가 있습니다. 각 도시에 대한 스프레드 시트를 작성하고 어느 시트에서든지 변경 될 때마다 데이터를 동기화하려고합니다. 전체 데이터를 관리하고 5 개의 스프레드 시트 각각을 다른 사람들에게 할당합니다. 그렇게하면 모든 데이터에 대한 액세스 권한이없는 시트를 업데이트 할 수 있습니다. 기본 쿼리 또는 가져 오기 기능을 사용할 때의 문제점은 사용자가 '도시'스프레드 시트를 변경하면 데이터가 참조되므로 시트가 손상된다는 것입니다.여러 Google 스프레드 시트 (5+)를 마스터 google 스프레드 시트로 다시 동기화

검색을 수행 한 후 아래에서 '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는 예를 들어. * city = 'miami'를 선택하십시오. 그러나 지금은 Google 스프레드 시트로는 불가능합니다.

그래서 다음 스크립트는이 스크립트를 사용하고 하위 스프레드 시트에 필터를 설정하는 것입니다. 문제는 스크립트를 실행할 때 전체 시트를 다시 복사하고 5 명의 사용자 중 한 명이 동시에 자신의 스프레드 시트를 업데이트하는 경우 변경 사항을 덮어 쓸 때 문제가 발생할 수 있다는 것입니다. 내가 가진 각 생각은 각 레코드가 고유 한 ID를 가지고 있기 때문에 (id라는 열이 있음) 활성 스프레드 시트에서 idas = masterspreadsheet.id를 편집하는 마스터 시트의 행을 업데이트하는 방법을 알 수 있습니까?

올바른 방향으로 어떤 도움을 주시면 대단히 감사하겠습니다.

+0

당신은 실제로 구글 스프레드 시트에서 쿼리를 사용할 수 있지만,이 데이터로 항상 업데이트됩니다 동적 될 것입니다 : https://support.google.com/docs/answer/3093343?hl= en. 이게 문제를 해결할 수 있습니까? – Kriggs

+0

별도의 스프레드 시트에서 데이터를 가져 오는 중이므로 쿼리 기능을 단독으로 사용할 수 없습니다. 나는 데이터를 참조하는 importrange를해야한다. 불행히도, 이것은 나를 위해 작동하지 않습니다. – 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]); 

코드를 실행 한 다음 로그를보고 변수를 디버그하여 코드를 디버깅하는 방법을 확인하십시오.

그런 다음 indexOf()slice()을 사용하여 원하지 않는 데이터 부분을 제거 할 수 있습니다. 여러 Google 시트를 사용하는 자들과 Excel 용

+0

그건 실제로 좋은 생각입니다. 그러나 한 걸음 더 나아가려면 필자는 잘린 데이터를 마스터 스프레드 시트로 다시 업데이트하는 문제에 여전히 고착되어 있습니다. 현재 가지고있는 코드를 사용하면 변경 사항뿐만 아니라 전체 시트에 복사됩니다. 그것에 대한 아이디어가 있습니까? – User125

0

솔루션 :

나는 Google 드라이브에 자신의 파일을 편집하는 사용자가 있습니다. 내 마스터 시트는 필요한 모든 정보를 하나로 결합합니다. Google은 Google 시트에 다른 시트의 특정 위치에서 데이터를 가져 오는 명령을 내장하고 있습니다. 마스터 Google 시트 문서를 만들어 모든 관련 정보를 1 개의 문서로 가져옵니다. 이렇게하면 쿼리하지 않으려는 모든 다른 정보가 보호되어 하나의 Google 시트에 모두 표시됩니다.

(개인 정보 보호를 위해 일부 글자를 변경했습니다. 단지 예일뿐입니다 :) 데이터를 가져 오는 셀 즉 A1을 입력하십시오. A1에서 C2까지 Totals라는 시트에서 데이터를 가져옵니다.

= 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 : 1 개의 웹 쿼리를 Excel로 할 수 있습니다.

또는

당신은 엑셀만을 사용하는 경우, 그냥 공유 구글 드라이브를 만들거나 드라이브에 문서를 공유 할 수 있습니다. 컴퓨터에 Google 드라이브를 설치 한 다음 정상적으로 드라이브에서 Excel 파일을 참조하면됩니다. Google 드라이브에서 계속 업데이트됩니다. 가장 간단한 솔루션은 모든 사람이 Excel을 사용하여 컴퓨터 동기화 드라이브에 파일을 공유하도록하는 것입니다. 그 후에는 드라이브의 일정한 위치에있는 다른 Excel 파일에 대한 일반적인 참조 만 사용하십시오.

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