当您自己编辑每个单元格时,如果更改第一和第二秒列,该脚本将起作用。但是当您过去其中一行时。只会更改第一列
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"]]);
答案 0 :(得分:1)
我不确定您的逻辑。似乎getCell(1,1)和getCell(1,2)最终将具有相同的值。但是,假设dateChange返回一个Date,这可能会对您进行一些次要的名称修改。
config vars