我在 A 列(從第 2 行開始)中獲得了一些額外的日期和時間資訊,我需要將其洗掉,因為它阻止了一些持續時間計算。A 列中的所有行都在實際日期和時間之后附加了“GMT 0800(太平洋夏令時)”。
所以我想用下面的代碼做的是洗掉'GMT'之前空格后的所有文本(所以之后沒有剩余的尾隨空格)。我收到回圈依賴錯誤,這是可以理解的,因為我將公式插入到包含資料的單元格中。我怎樣才能避免這種情況,而只是從 A 列的每一行中洗掉那些討厭的 GMT 內容?提前致謝!
這是我正在嘗試完成的示例:
我在一個單元格中有這個日期和時間:
Nov. 27 2021 19:00:05 GMT 0800 (Pacific Daylight Savings)
我希望它變成:
Nov. 27 2021 19:00:05
我的代碼目前是:
function RemoveGMT() {
// Get Source Spreadsheet
var source = SpreadsheetApp.getActiveSpreadsheet();
// Get Source Sheet from Spreadsheet
var source_sheet = source.getActiveSheet();
// Get Last Row
var lastRow = source_sheet.getLastRow();
// Insert TRIM Formula Into Every Row Of Column A
source_sheet.getRange("A2").setFormula('=TRIM(LEFT(A2,FIND("GMT",A2)))');
var FillDownRange = source_sheet.getRange(2,1,lastRow);
source_sheet.getRange("A2").copyTo(FillDownRange);
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想在“A”列中轉換
GMT 0800 (Pacific Daylight Time)為0800 (Pacific Daylight Time)。
如果我的理解是正確的,下面修改的腳本怎么樣?
修改后的腳本:
function RemoveGMT() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var source_sheet = source.getActiveSheet();
source_sheet.getRange("A2:A" source_sheet.getLastRow()).createTextFinder("GMT ").replaceAllWith("");
}
在此修改中,
GMT 0800 (Pacific Daylight Time)轉換為0800 (Pacific Daylight Time). 當您的值包括GMT 0800 (Pacific Daylight Time)和 時GMT0800 (Pacific Daylight Time),請按如下方式修改最后一行。source_sheet.getRange("A2:A" source_sheet.getLastRow()).createTextFinder("^GMT ?").useRegularExpression(true).replaceAllWith("");
參考:
- 創建文本查找器(查找文本)
添加:
從 OP 的以下回復中,
我的目標是在格林威治標準時間之后洗掉所有內容。因此,我的手機將從:2021 年 11 月 27 日 19:00:05 GMT 0800(太平洋夏令時間)變為:2021 年 11 月 27 日 19:00:05
我沒注意到你想轉換Nov. 27 2021 19:00:05 GMT 0800 (Pacific Daylight Time)為Nov. 27 2021 19:00:05. 但是,當我在您的答案中看到您的腳本時,您似乎想GMT -0800 (Pacific Standard Time)從單元格值中洗掉 的值。所以我認為你的評論與你的回答不同。并且,例如,在您的腳本中,當單元格值為 os 時Nov. 27 2021 19:00:05 GMT -0800 (Pacific Standard Time),當使用您的腳本時,該值變為Nov. 27 2021 19:00:05 GMT 。最后一個空格不能洗掉。而且,我認為當 TextFinder 用于搜索值時,可以通過從檢索到的陣列中搜索的方法降低處理成本getValues。因此,作為針對您的情況的修改腳本,我想提出以下示例腳本。
示例腳本:
在此示例腳本中,從您的回復My goal is to remove everything after the GMT. So, my cell would go from: Nov. 27 2021 19:00:05 GMT 0800 (Pacific Daylight Time) to: Nov. 27 2021 19:00:05和腳本中var to_replace = "GMT -0800 (Pacific Standard Time)";, GMT 0800 (Pacific Daylight Time)和GMT -0800 (Pacific Standard Time)從單元格值中洗掉。
function RemoveGMT() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var source_sheet = source.getActiveSheet();
source_sheet.getRange("A2:A" source_sheet.getLastRow()).createTextFinder(" ?GMT. $").useRegularExpression(true).replaceAllWith("");
}
uj5u.com熱心網友回復:
這是我的代碼,我只是搜索字串的整個 GMT 部分并將其替換為“”。
function RemoveGMT(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dell")
var lastRow = sheet.getLastRow()
var lastColumn = sheet.getLastColumn()
var range = sheet.getRange(1, 1, lastRow)
var to_replace = "GMT -0800 (Pacific Standard Time)";
var replace_with = "";
var data = range.getValues();
var oldValue="";
var newValue="";
var cellsChanged = 0;
for (var r=0; r<data.length; r ) {
for (var i=0; i<data[r].length; i ) {
oldValue = data[r][i];
newValue = data[r][i].toString().replace(to_replace, replace_with);
if (oldValue!=newValue)
{
cellsChanged ;
data[r][i] = newValue;
}
}
}
range.setValues(data);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/367942.html
