У меня есть таблицы Google с большим количеством таблиц (более 400)... и мне нужно вставить формулы (H2:H13) во все таблицы.
Я знаю, что могу сделать это вручную... снимая листы один за другим. Я также попробовал этот сценарий приложения, но это также означает, что мне нужно более 400 сценариев приложения...
function Movedata1() {
var ss = SpreadsheetApp.getActive();
var srcSheet = ss.getSheetByName("Sheet1");
var dstSheet = ss.getSheetByName("Sheet2");
var srcRange = srcSheet.getRange("H2:H13");
var dstRange = dstSheet.getRange(dstSheet.getLastRow() - 11, 8);
srcRange.copyTo(dstRange); // or srcRange.copyTo(dstRange, { contentsOnly: true });
}
Мне нужна помощь со скриптом приложения, чтобы он работал на всех листах.
Ссылка на таблицы находится здесь: https://docs.google.com/spreadsheets/d/1LR0i-2LCg6ZrfBGHpX-XVlScRgvcOxh1te9Wj_x7ObA/edit?gid=0#gid=0
СПАСИБО!
Используя getSheets(), вы можете затем просмотреть все листы, обновляя формулы/значения:
function Movedata3() {
const ss = SpreadsheetApp.getActive();
const allsheets = ss.getSheets();
const srcSheet = ss.getSheetByName("Sheet1");
const srcRange = srcSheet.getRange("H2:H13");
allsheets.forEach((sheet) => {
const dstRange = sheet.getRange(sheet.getLastRow() - 11, 8);
srcRange.copyTo(dstRange); // or srcRange.copyTo(dstRange, { contentsOnly: true });
});
}
Вы можете сделать это, чтобы перебрать все листы и скопировать формулы из H2:H13 в ячейки на каждом листе. Попробуйте это сначала в тестовом листе.
function Movedata1() {
var ss = SpreadsheetApp.getActive();
var ssName= "Sheet1";
//get source sheet and range
var srcSheet = ss.getSheetByName(ssName);
var srcRange = srcSheet.getRange("H2:H13");
//get all sheets in spreadsheet
var sheets = ss.getSheets();
// Loop through each sheet
for (var i = 0; i < sheets.length; i++) {
var sheet = sheets[i];
// Skip the source sheet to avoid overwriting
if (sheet.getName() === ssName) continue;
// Get the destination range based on last row
var lastRow = sheet.getLastRow();
var dstRange = sheet.getRange(lastRow - 11, 8);
// Copy formulas only (preserves formatting)
srcRange.copyTo(dstRange, SpreadsheetApp.CopyPasteType.PASTE_FORMULA);
}
}
Дайте мне знать, если это сработало!