谷歌脚本过去一行,脚本只能在1列上工作.如果编辑该列,则它将更改为2列



当您在自己的单元格中编辑第一列和第二列时,脚本可以工作。但当你经过其中的一行时,它只会改变第一列的

function onEdit(e) {
var range = e.range;
var column = range.getColumn();
var value = range.getValue();
var sheet = range.getSheet();
var sheetName = sheet.getName();

//Logger.log(value);
//Logger.log(Date(value).getMonth());
Logger.log(range.getColumn());
switch (sheetName)  {
case "sheetnameeee":
if(column == 1||column == 2)
{
range.getCell(1, 1).setValue(dateChange(value)).setNumberFormat("yyyy-MM-dd");
range.getCell(1, 2).setValue(dateChange(value)).setNumberFormat("yyyy-MM-dd");
};
break;
}

输入:

Start date   |  Eind date
okt 15, 2018 |  okt 21, 2018

复制和过去:

Start date   |  Eind date
2018-10-15   |  okt 21, 2018

但它需要做:

Start date   |  Eind date
2018-10-15   |  2018-10-21

这是我的解决方案。这不太好,但很管用。。

switch (sheetName)  {
case "Sheetnameeeee":
var ss = SpreadsheetApp.getActiveSpreadsheet();
var test222 = ss.getSheetName();
var startRow = 1
var rowRange = ss.getRange("A:B");
var rowLength = getRange.getLastRow();
var RangeValues = getRange.getValues();
for (var i=startRow; i < rowLength; i++) {
if(typeof RangeValues[i][0] === 'string')
{ 
RangeValues[i][0] = dateChange(RangeValues[i][0]);
};
if(typeof RangeValues[i][1] === 'string')
{
RangeValues[i][1] = dateChange(RangeValues[i][1]);
};        
}
rowRange.setValues(RangeValues);
rowRange.setNumberFormats([["yyyy-MM-dd","yyyy-MM-dd"]]);

我不确定你的逻辑。看起来getCell(1,1(和getCell的值是一样的。但是,如果dateChange返回一个Date,这可能会对您的名称进行一些小的修改。

function onEdit(e) {
try {
if( e.range.getSheet().getName() === "Sheet4" ) {
var range = null;
if( e.range.getColumn() === 1 ) {
range = e.range.offset(0,0,1,2);
}
else if( e.range.getColumn() === 2 ) {
range = e.range.offset(0,-1,1,2);
}
var values = range.getValues();
values[0][0] = dateChange(values[0][0]);
values[0][1] = dateChange(values[0][1]);
range.setValues(values);
range.setNumberFormats([["yyyy-MM-dd","yyyy-MM-dd"]]);
}
}
catch(err) {
Logger.log(err);
}
}

最新更新