#javascript #database #google-sheets
#javascript #База данных #google-sheets
Вопрос:
Я использовал filter function =FILTER(‘check-in’!A8:G,’check-in’!C8:C =C4), чтобы отфильтровать материал из моего листа ‘check-in’ в моем листе ‘check-out’ . Я также создал свой первый столбец ‘check-out’ таким образом, чтобы скопировать строку на лист с именем ‘database’, как только первый столбец строк содержит «y» (означает да). Это работает, но когда выбрана первая строка (которая включает функцию фильтра), она также копирует формулу, и после этого лист базы данных не будет хранить больше данных. Любые советы будут оценены.
function onEdit(event) {
assumes source data in sheet named Needed
target sheet of move to named Acquired
test column with yes/no is col 4 or D
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "check-out" amp;amp; r.getColumn() == 1 amp;amp; r.getValue() == "y") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Database");
var target = targetSheet.getRange(targetSheet.getLastRow() 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
Ответ №1:
Вы можете копировать только значения:
Копирует данные из диапазона ячеек в другой диапазон ячеек. По умолчанию копируются как значения, так и форматирование, но это можно переопределить с помощью дополнительных аргументов.
// The code below will copy only the values of the first 5 columns over // to the 6th column. var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A:E").copyTo(sheet.getRange("F1"), {contentsOnly:true}); }
в вашем случае:
s.getRange(row, 1, 1, numColumns).copyTo(target, {contentsOnly:true});