我对电子表格中的富文本值有问题。下面的代码设置单元格中的富文本值( URL),但获取富文本值返回null。这个问题似乎与富文本值文本是数字文本的事实有关。
function SheetEdit(e) {
let sheet = e.source.getActiveSheet();
let row = e.range.getRow();
let col = e.range.getColumn();
let year = 2022;
// The following getRichTextValue() returns correctly. Its text value is non-numeric.
let folderId = sheet.getRange(row,1).getRichTextValue().getLinkUrl().split('/')[5];
let folder = DriveApp.getFolderById(folderId);
let filelist = folder.getFilesByName(fileName);
if (filelist.hasNext()==true) {
let file = filelist.next();
let url = file.getUrl().split('?')[0]; // remove URL parameters
// The following setRichTextValue() correctly sets the value in the spreadsheet.
// Its text value (year) is numeric.
let richText = SpreadsheetApp.newRichTextValue().setText(String(year)).setLinkUrl(url).build();
sheet.getRange(row,col).setRichTextValue(richText);
// However, the following getRichTextValue() returns null
Logger.log(sheet.getRange(row,col).getRichTextValue().getText());
Logger.log(sheet.getRange(row,col).getRichTextValue().getLinkUrl());
}
}
发布于 2022-09-27 03:13:10
这似乎是一个已知问题。解决这个问题的一种方法就是改变
SpreadsheetApp.newRichTextValue().setText(String(year))
至
SpreadsheetApp.newRichTextValue().setText("'"+year)
这将导致电子表格将年份(数字)解释/显示为文本(没有前面的'
),而不是数字。当你打电话的时候
sheet.getRange(row,col).getRichTextValue().getText()
您将得到预期的2022
。
https://stackoverflow.com/questions/73861707
复制相似问题