Google 스프레드 시트 (app-script)의 한 스프레드 시트에서 다른 스프레드 시트로 레코드를 전송하기 위해 작성한 스 니펫 코드가 있습니다.Google 문서 도구 스프레드 시트 (app-script) : 중복되지 않은 스프레드 시트간에 데이터 복사
function myFunction() {
// Get Spreadsheets
var source = SpreadsheetApp.openById("spreadsheetKeySource");
var target = SpreadsheetApp.openById("spreadsheetKeyTarget");
// Set Sheets
var source_sheet = source.getSheetByName("Sheet1");
var target_sheet = target.getSheetByName("Sheet1");
// Get target last row
var last_row = target_sheet.getLastRow();
// Set Ranges
var source_range = source_sheet.getRange("A1:B1");
var target_range = target_sheet.getRange("A"+(last_row+1)+":B"+(last_row+1));
// Fetch values
var values = source_range.getValues();
// Save to spreadsheet
target_range.setValues(values);
}
소스에서 내용을 가져 와서 루프 할 수 있는지, 대상에 존재하지 않는 레코드 만 추가 할 수 있는지 알아야합니다. 분명히이 기능은이 목적에 부적합하며 누군가 나를 올바른 방향으로 밀거나 코드 스 니펫을 예제로 제공하기를 바라고 있습니다. 난 당신이 도움을 위해 :(...
덕분에 지금까지 여기에 구글에 유용하거나 아무것도 찾을 수 없습니다
편집
나는이. 범위가 변경 완료 얻을 수 있었다 지금은했다 여러 장이있는 여러 스프레드 시트에서 데이터를 가져 와서 전자 메일 만 가져 와서 전자 메일 스프레드 시트에 추가하십시오. 작성한 코드는 다음과 같습니다.
실제로이 스크립트는 masterSpreadsheet 이것을 실행하기위한 메뉴 버튼이 추가되고 추가되었습니다. 스크립트. 우리의 더 많은 경험 사람들의
/**
* Updates the master spreadsheet with the set source spreadsheets and pages
**/
function updateMasterSpreadsheet() {
// var sourceSpreadsheetsArray = new Array();
var sourceSpreadsheetsObject = new Object;
// Add Spreadsheet IDs and sheet names that need to be copied from
sourceSpreadsheetsObject['sourceSpreadsheet1Key'] = new Array("Sheet1");
sourceSpreadsheetsObject['sourceSpreadsheet2Key'] = new Array("Sheet1");
// Open master spreadsheet
var target = SpreadsheetApp.openById("masterSpreadsheetKey");
// Open master sheet
var target_sheet = target.getSheetByName("Sheet1");
// Loop through all source spreadsheets
for (var id in sourceSpreadsheetsObject) {
// Open source spreadsheet
var source = SpreadsheetApp.openById(id);
// Loop through and process each sheet
for (var sheetID in sourceSpreadsheetsObject[id]) {
// Open source spreadsheet sheet
var source_sheet = source.getSheetByName(sourceSpreadsheetsObject[id][sheetID]);
// Process sheet
_updateMasterSpreadsheet(source_sheet, target_sheet);
} // END - source sheets loop
} // END - source spreadsheets loop
// Add last updated
target_sheet.getRange("B1").setValue(new Date());
}
/**
* Performs the actual copy into the master spreadsheet
**/
function _updateMasterSpreadsheet(source_sheet, target_sheet) {
// Get target last row
var last_row = target_sheet.getLastRow();
// Get Source Range
var source_range = source_sheet.getDataRange();
// Fetch Source Values
var source_data = source_range.getValues();
//Iterate over all cells, looking for non-empty ("") cells
for (var row in source_data) {
// check if empty
if (source_data[row][0]!= "") {
// Fetch data in the sheet (do this in the loop to ensure that we check all newly added items)
var target_range = target_sheet.getDataRange();
var target_data = target_range.getValues();
// Set flags
var found = false;
var stop = false;
// Process loop
while(found == false && stop == false) {
// Check for duplicates
for (var tmpRow in target_data) {
if (source_data[row][0] == target_data[tmpRow][0]) {
found = true;
break;
}
}
// If no duplicate, add to sheet
if (!found) {
last_row++;
target_sheet.getRange("A"+last_row).setValue(source_data[row][0]);
}
// Prevent infinite loop
stop = true;
}
}
}
}
간단한 프로젝트가 더 복잡해졌지만 다행히도이 사실을 알 수 있었고 프로젝트가 완료되었습니다. 여러 스프레드 시트와 여러 시트간에 데이터를 마스터 스프레드 시트로 이동해야했습니다. 그 목적은 각 시트의 다른 위치에 저장된 전자 메일을 전자 메일 목록 인 마스터 스프레드 시트로 가져 와서 중복이 없음을 확인하는 것입니다. – Jeremy