清除 Google 工作表中的格式
Clearing formats in Google Sheets
我有一个 Microsoft Flow 将数据发送到 Google Sheet。当数据出现在 sheet 中时,一些单元格有一个隐藏的撇号,这会阻止计算并阻止某些公式。
我有一个用数字格式化单元格的脚本,这样我就可以 运行 计算。我无法做的是清除我想要 运行 =NOW() 的单元格中的撇号,以便我可以创建时间戳。
我已经创建了一个脚本,但我不知道如何让这个单元格执行我想要的操作。
function setFormat(){SpreadsheetApp.getActiveSheet().getRange("A2:A").getValue().replace("'=NOW()","=NOW()");SpreadsheetApp.getActiveSheet().getRange("C2:C").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("D2:D").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("E2:E").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("F2:F").setNumberFormat('000');}`
这个样本怎么样?
使用getValues()
,检索"A2:A"的数据。
https://developers.google.com/apps-script/reference/spreadsheet/range#getvalues
在 1 检索到的数据从 '=NOW()
转换为 =NOW()
。
使用setFormulas()
,转换后的数据导入到"A2:A"。
https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasformulas
setNumberFormat()
适用于您的脚本。
示例脚本:
function setFormat(){
var ss = SpreadsheetApp.getActiveSheet();
var Data = ss.getRange("A2:A").getValues();
var replacedData = [[i[0].replace("'=NOW()","=NOW()")] for each (i in Data) if(i[0])];
ss.getRange(2, 1, replacedData.length, replacedData[0].length).setFormulas(replacedData);
ss.getRange("C2:C").setNumberFormat('000');
ss.getRange("D2:D").setNumberFormat('000');
ss.getRange("E2:E").setNumberFormat('000');
ss.getRange("F2:F").setNumberFormat('000');
}
如果我误解了你的问题,我很抱歉。
添加了 1 个:
作为公式的=NOW()
的类型是对象。所以只有'=NOW()
作为字符串通过比较类型转换为公式=NOW()
。当您添加更多数据时,添加的数据将被转换。
function setFormat(){
var ss = SpreadsheetApp.getActiveSheet();
var Data = ss.getRange("A2:A").getValues();
var replacedData = [typeof(i[0])=="object" ? ["=NOW()"] : [i[0].replace("'=NOW()","=NOW()")] for each (i in Data) if(i[0])];
ss.getRange(2, 1, replacedData.length, replacedData[0].length).setFormulas(replacedData);
ss.getRange("C2:C").setNumberFormat('000');
ss.getRange("D2:D").setNumberFormat('000');
ss.getRange("E2:E").setNumberFormat('000');
ss.getRange("F2:F").setNumberFormat('000');
}
添加了 2 个:
此示例在导入新数据时将日期对象作为字符串导入。
function setFormat(){
var ss = SpreadsheetApp.getActiveSheet();
var Data = ss.getRange("A2:A").getValues();
var replacedData = [
typeof(i[0])=="object"
? [i[0]]
: [i[0].replace("=NOW()", Utilities.formatDate(
new Date(),
Session.getScriptTimeZone(),
'yyyy/M/d HH:mm:ss')
)
]
for each (i in Data) if(i[0])
];
ss.getRange(2, 1, replacedData.length, replacedData[0].length).setValues(replacedData);
ss.getRange("C2:C").setNumberFormat('000');
ss.getRange("D2:D").setNumberFormat('000');
ss.getRange("E2:E").setNumberFormat('000');
ss.getRange("F2:F").setNumberFormat('000');
}
我有一个 Microsoft Flow 将数据发送到 Google Sheet。当数据出现在 sheet 中时,一些单元格有一个隐藏的撇号,这会阻止计算并阻止某些公式。
我有一个用数字格式化单元格的脚本,这样我就可以 运行 计算。我无法做的是清除我想要 运行 =NOW() 的单元格中的撇号,以便我可以创建时间戳。
我已经创建了一个脚本,但我不知道如何让这个单元格执行我想要的操作。
function setFormat(){SpreadsheetApp.getActiveSheet().getRange("A2:A").getValue().replace("'=NOW()","=NOW()");SpreadsheetApp.getActiveSheet().getRange("C2:C").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("D2:D").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("E2:E").setNumberFormat('000');SpreadsheetApp.getActiveSheet().getRange("F2:F").setNumberFormat('000');}`
这个样本怎么样?
使用
getValues()
,检索"A2:A"的数据。 https://developers.google.com/apps-script/reference/spreadsheet/range#getvalues在 1 检索到的数据从
'=NOW()
转换为=NOW()
。使用
setFormulas()
,转换后的数据导入到"A2:A"。 https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasformulassetNumberFormat()
适用于您的脚本。
示例脚本:
function setFormat(){
var ss = SpreadsheetApp.getActiveSheet();
var Data = ss.getRange("A2:A").getValues();
var replacedData = [[i[0].replace("'=NOW()","=NOW()")] for each (i in Data) if(i[0])];
ss.getRange(2, 1, replacedData.length, replacedData[0].length).setFormulas(replacedData);
ss.getRange("C2:C").setNumberFormat('000');
ss.getRange("D2:D").setNumberFormat('000');
ss.getRange("E2:E").setNumberFormat('000');
ss.getRange("F2:F").setNumberFormat('000');
}
如果我误解了你的问题,我很抱歉。
添加了 1 个:
作为公式的=NOW()
的类型是对象。所以只有'=NOW()
作为字符串通过比较类型转换为公式=NOW()
。当您添加更多数据时,添加的数据将被转换。
function setFormat(){
var ss = SpreadsheetApp.getActiveSheet();
var Data = ss.getRange("A2:A").getValues();
var replacedData = [typeof(i[0])=="object" ? ["=NOW()"] : [i[0].replace("'=NOW()","=NOW()")] for each (i in Data) if(i[0])];
ss.getRange(2, 1, replacedData.length, replacedData[0].length).setFormulas(replacedData);
ss.getRange("C2:C").setNumberFormat('000');
ss.getRange("D2:D").setNumberFormat('000');
ss.getRange("E2:E").setNumberFormat('000');
ss.getRange("F2:F").setNumberFormat('000');
}
添加了 2 个:
此示例在导入新数据时将日期对象作为字符串导入。
function setFormat(){
var ss = SpreadsheetApp.getActiveSheet();
var Data = ss.getRange("A2:A").getValues();
var replacedData = [
typeof(i[0])=="object"
? [i[0]]
: [i[0].replace("=NOW()", Utilities.formatDate(
new Date(),
Session.getScriptTimeZone(),
'yyyy/M/d HH:mm:ss')
)
]
for each (i in Data) if(i[0])
];
ss.getRange(2, 1, replacedData.length, replacedData[0].length).setValues(replacedData);
ss.getRange("C2:C").setNumberFormat('000');
ss.getRange("D2:D").setNumberFormat('000');
ss.getRange("E2:E").setNumberFormat('000');
ss.getRange("F2:F").setNumberFormat('000');
}