Скопируйте и вставьте ячейку при отправке формы - PullRequest
0 голосов
/ 25 мая 2019

При отправке формы в Google Sheets я хочу иметь возможность скопировать и вставить одну конкретную ячейку в новую строку. Я хочу сделать это в той же ячейке, но в качестве значения. (Это формула, зависящая от переменной, которая изменяется, и я хочу, чтобы она была вставлена ​​в качестве значения, переданного для целей исторических данных).

РЕДАКТИРОВАТЬ: Извинения за расплывчатость. Javascript не является моей сильной стороной, и я новичок в сценариях Google. Я взял некоторый код от Нейта Сарджента в ответе Quora и отредактировал его следующим образом, чтобы сделать то, что искал ...

function pasteValue(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('INVOICES')
var lastRow = sheet.getDataRange().getValues();

lastRow.forEach(function (row,index) {
    if (row[1] == "") {  
        lastRow.length = index;
    }
});

var newRange = sheet.getRange(lastRow.length,13);
newRange.copyTo(newRange, {contentsOnly: true})
sheet.setActiveRange(newRange);
}

Ответы [ 3 ]

1 голос
/ 25 мая 2019

для этой цели есть удобный ярлык: CTRL + SHIFT + V, который делает это. просто используйте стандартную копию и вставьте ее с этим комбо, чтобы вставить только значения без формул. со скриптом вам нужно сделать что-то вроде:

function moveValuesOnly() { var ss = SpreadsheetApp.getActiveSpreadsheet();
                            var source = ss.getRange('Sheet1!A1');
                            source.copyTo(ss.getRange('Sheet2!B1'), {contentsOnly: true}); }

, где вы перемещаете содержимое Sheet1!A1 как значение в Sheet2!B1

0 голосов
/ 25 мая 2019
function pasteValue(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('INVOICES')
var lastRow = sheet.getDataRange().getValues();

lastRow.forEach(function (row,index) {
    if (row[1] == "") {  
        lastRow.length = index;
    }
});

var newRange = sheet.getRange(lastRow.length,13);
newRange.copyTo(newRange, {contentsOnly: true})
sheet.setActiveRange(newRange);
}
0 голосов
/ 25 мая 2019

Это вставит значение в A1 Sheet1 в следующий доступный столбец в строке, где произошли данные для этой отправки.

function copyAndPaste(e) {
  e.range.getSheet().getRange(e.range.rowStart,e.range.columnEnd +1).setValue(e.source.getSheetByName('Sheet1').getRange('A1').getValue());
}
...