当该行发生更改时,使用当前日期更新行中的单元格

时间:2018-02-16 17:31:30

标签: google-sheets

我找到了两个脚本。由于它们都是onEdit()函数,因此无法并排工作,我试图合并它们。

我正在使用这张表格来展示我卖的东西的基本库存/跟踪我卖的东西。

我想要两件事;
首先:我希望每当我对该行进行更改时,A列中的单元格都会更改为当前日期 第二:如果我将B列中的值更改为“已售出”,我希望将其移至另一张表格(以及因更改而获得新日期)。

B栏有以下选择:
-Ja(如库存)
-Bokad(如预订)
-Såld(已售出)

表格的名称是: -Blocket(库存) -Sålda(已售)

function onEdit(event) {
// assumes source data in sheet named Blocket
// target sheet of move to named Sålda
// test column with "Såld" is col 2

var s = event.source.getActiveSheet(),
cols = [2], 
colStamp = 1,
ind = cols.indexOf(event.range.columnStart)
if (s.getName() == 'Blocket' || ind == -1) return;
event.range.offset(0, parseInt(colStamp - cols[ind]))
.setValue(e.value ? new Date() : null);


var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();

if(s.getName() == "Blocket" && r.getColumn() == 2 && r.getValue() == "Såld") 
{
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sålda");
if(targetSheet.getLastRow() == targetSheet.getMaxRows()) {

targetSheet.insertRowsAfter(targetSheet.getLastRow(), 20); //inserts 20 rows 
after last used row
}
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row); 
}
} 

1 个答案:

答案 0 :(得分:0)

看看是否有效

$ printf "~@##$@#$%%#*[]{};:^^&&*)\n" | ./bin/stateloop
~@###$%#*[]{};:^^&&*)