有个需求是根据一个表格的所有子表,同步到另个表格(包含子表)的数据,用google sheets里面的扩展程序里的apps 脚本功能,编写脚本。为什么要同步呢?因为原表默认是不可编辑的,打算同步过来后再进行编辑。sourceSpreadsheetId跟targetSpreadsheetId为google sheet 表格地址栏d后面的一串字符。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| function synchronizeSheetsToAnotherFile() { const sourceSpreadsheetId = "id1"; const targetSpreadsheetId = "id2"; # 比如:1NOtSSvDwXrca8vqyZW6OqQJwGaCICMVguSz1-i72oqg
const sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId); const targetSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetId);
const sourceSheets = sourceSpreadsheet.getSheets();
sourceSheets.forEach(sheet => { const sheetName = sheet.getName(); let targetSheet = targetSpreadsheet.getSheetByName(sheetName);
if (!targetSheet) { targetSheet = targetSpreadsheet.insertSheet(sheetName); } else { targetSheet.clear(); }
const range = sheet.getDataRange(); const displayValues = range.getDisplayValues(); const formats = range.getBackgrounds(); const fontWeights = range.getFontWeights();
const targetRange = targetSheet.getRange(1, 1, displayValues.length, displayValues[0].length); targetRange.setValues(displayValues); targetRange.setBackgrounds(formats); targetRange.setFontWeights(fontWeights);
}); }
|