Я хотел бы иметь скрипт, который выполняет следующий шаг:
- Пользователь выбирает ячейку, например A5 (столбец A будет столбцом уникального идентификатора)
- Нажмите кнопку / запустите ярлык макроса, и появится запрос с запросом позиции. Пример: пользователь вводит
A2
- Возьмите выбранную строку и переместите ее в заданную позицию
- Переименуйте каждый столбец Значение в новое значение, измените их порядок, а затем переместите строку Пример. Значение A5 становится значением A2, а позиция A5 становится равной A2, значение A2 становится значением A3 и перемещается строка A2 в строку A3. , Значение A3 становится значением A4, а строка A3 перемещается в A4 и т. Д.
Вот что у меня есть:
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu('Custom Menu')
.addItem('Show prompt', 'showPrompt')
.addToUi();
}
function showPrompt() {
var ui = SpreadsheetApp.getUi(); // Same variations.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var value = sheet.getActiveCell().getValue();
var range = sheet.getActiveRange().getA1Notation();
var result = ui.prompt(
'Move row',
'Wich position do you want:',
ui.ButtonSet.OK_CANCEL);
// Process the user's response.
var button = result.getSelectedButton();
var text = result.getResponseText();
if (button == ui.Button.OK) {
// User clicked "OK".
var selectValue = sheet.getRange(text).getValue();
var selectRange = sheet.getRange(text);
ui.alert('range: ' + selectRange + '.');
sheet.getRange(range).setValue(selectValue);
}
}
Я на шаге 3, я пытаюсь переместить выбранную строку в другое место с помощью moveTo()
, но она переместит каждую строку ниже выбранного диапазона и переместит ее.
sheet.getRange("A1:E").moveTo(sheet.getRange("F1"));