Копирование из любого диапазона в любой другой диапазон в той же электронной таблице.
Вот пользовательский диалог для выбора диапазонов и диапазонов и выполнения копирования диапазона с диапазоном.
Существует множество способовсделай это.У меня есть простой шаблонный html, который я использую для довольно быстрого извлечения подобного рода вещей.Это заняло у меня продолжительность ButterFly Effect 2, которую я слушал на заднем плане.Но я не печатаю так быстро, как раньше.
Я начал с макроса, и это макрос-скрипт:
function CopyRangeFromSheetToSheet() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().offset(-2, 0, 1, 7).activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('InvData'), true);
spreadsheet.getCurrentCell().offset(3, 5).activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('form response'), true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('InvData'), true);
spreadsheet.getCurrentCell().offset(-2, -5, 1, 7).activate();
spreadsheet.getRange('\'form response\'!A9:G9').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
Но я считаю, что вы хотели указать из идиапазонам, поэтому я решил использовать настраиваемый немодальный диалог, который позволяет выбирать диапазоны и диапазоны, выбирая лист и диапазон и нажимая кнопку для начальных и двух значений, и когда у вас есть оба диапазона, вы нажимаете кнопку копирования и Wallaон копирует и удаляет диалог.Требуется несколько файлов, и они все ниже:
example1.html:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('res1') ?>
<?!= include('css1') ?>
</head>
<body>
<div id="control">
<br />FROM: <input type="text" id="fromTxt" placeholder="Select From Range" /><input type="button" value="Select From" onClick="selectFrom();" />
<br />TO: <input type="text" id="toTxt" placeholder="Select To Range" /><input type="button" value="Select To" onClick="selectTo();" />
<br /><input type="button" value="Copy" onClick="runCopy();" />
</div>
<?!= include('script1') ?>
</body>
</html>
res1.html:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
script1.html:
<script>
$(function(){
});
function selectFrom() {
google.script.run
.withSuccessHandler(function(rgstr){
$('#fromTxt').val(rgstr);
})
.selectFrom();
}
function selectTo() {
google.script.run
.withSuccessHandler(function(rgstr){
$('#toTxt').val(rgstr);
})
.selectTo();
}
function runCopy() {
var from=$('#fromTxt').val();
var to=$('#toTxt').val();
var cObj={from:from,to:to};
google.script.run
.withSuccessHandler(function(s){
google.script.host.close();
})
.performCopy(cObj);
}
console.log('My Code');
</script>
css1.html:
<style>
body {background-color:#ffffff;}
input{padding:2px;margin:2px;}
</style>
exampl1.gs
function selectFrom() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
var rgstr=Utilities.formatString('\'%s\'!%s',sh.getName(),rg.getA1Notation());
return rgstr;
}
function selectTo() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
var rgstr=Utilities.formatString('\'%s\'!%s',sh.getName(),rg.getA1Notation());
return rgstr;
}
function performCopy(cObj) {
var ss=SpreadsheetApp.getActive();
var frg=ss.getRange(cObj.from);
var trg=ss.getRange(cObj.to);
frg.copyTo(trg);
return 'done';
}
function showExample1Dialog(){
var userInterface=HtmlService.createTemplateFromFile('example1').evaluate();
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Example1");
}
function include(filename){
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}