我正在嘗試將時間戳插入 B 列中的單元格,該單元格與 C 列中編輯或粘貼的值具有相同的行索引。此外,我只想在 B 列的空單元格中插入時間戳,而跳過單元格已經有時間戳。
無論我編輯 C 列中的單元格還是在 B 列中的所有單元格為空時在 C 列中粘貼一個值,此代碼都可以正常作業。
此代碼在粘貼多個單元格時存在覆寫或不寫入值的問題。請幫我編輯它。
這是樣本表:插入時間戳 - 多單元格 - 檢查空白單元格
function insert_timestamp(e)
{
var s = SpreadsheetApp.getActiveSheet();
var cell = s.getActiveCell();
var r = e.range;
var firstRow = r.getRow();
var numRows = r.getNumRows();
var firstCol = r.getColumn();
var lastCol = r.getLastColumn();
var datecell = s.getRange(cell.getRowIndex(), 2);
if((firstCol == 3 || lastCol == 3) && s.getName() == 'test' && datecell.isBlank()) {
var destRange = s.getRange(firstRow, 2, numRows);
var dates = new Array(numRows).fill([new Date()]);
destRange.setValues(dates).setNumberFormat("MM/dd/yyyy hh:mm:ss");
}
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想在編輯“C”列時將日期放在“B”列。
- 在這種情況下,當“B”列為空時,您想輸入日期。
- 的功能
insert_timestamp作為 OnEdit 觸發器安裝。
為了檢查列“B”和“C”的值,我從已編輯行的列中檢索了值。而且,我認為事件物件可以用于您的情況。從這幾點來看,下面的示例腳本怎么樣?
示例腳本:
function insert_timestamp(e) {
var range = e.range;
var sheet = range.getSheet();
if ((range.columnStart == 3 || range.columnEnd == 3) && sheet.getSheetName() == 'test') {
var values = range.offset(0, -1, range.rowEnd - range.rowStart 1, 2).getDisplayValues();
var rangeList = values.reduce((ar, [b, c], i) => {
if (b == "") ar.push("B" (i range.rowStart));
// if (b == "" && c != "") ar.push("B" (i range.rowStart));
return ar;
}, []);
sheet.getRangeList(rangeList).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm:ss");
}
}
- 如果您不想在“C”列為空時將日期放入“B”列,請使用
if (b == "" && c != "") ar.push("B" (i range.rowStart));代替if (b == "") ar.push("B" (i range.rowStart));。
筆記:
- 此示例腳本由 OnEdit 觸發器運行。所以當你直接運行這個函式時,就會出現錯誤。請注意這一點。
參考:
- 事件物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411506.html
標籤:
