У меня есть Google Doc с текстом внутри, и я сделал скрипт, чтобы, если я выделю текст, он скопировал в таблицу Google в ячейке. Я прибыл, чтобы скопировать текст, но я не знаю, как это сделать сохранить те же цвета стилей, и проблема в том, что я не понимаю, как установить жирный / курсив ..
Это то, что я сделал до сих пор:
var SPREADSHEET_ID = "....."; // = assign your spreadsheet id to this variable
var SHEET_NAME = "Feuille 1"; // = assign your sheet name to this variable
var COORD_LIGNE = 5 ;
var COORD_COLONNE = 4 ;
function onOpen(e) {
DocumentApp.getUi()
.createMenu('Test')
.addItem('Copier la selection du texte', 'Copy')
.addToUi();
}
function Copy() {
var ss = DocumentApp.getActiveDocument();
var selection = ss.getSelection();
var result = "";
var fontColor, background , font, fontWeight ,TextAlignment ;
var ok_underline, ok_italis , ok_bold, ok_strikethrough ;
//Proceed only if something is selected, otherwise selection will be null >>>> pour voir le style/font/couleur on test pour 1 seul élément
if (selection) {
var elements = selection.getRangeElements();
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
// Only modify elements that can be edited as text; skip images and other non-text elements. ??? on n'a pas fait les cas italique et bold etc. ici >>>>> element.getElement().asText().setUnderline(underline)
// Qui sont des méthodes booleans >>>>>>>>>>>>>>>>>>>>>>>>> isUnderline(offset) isItalic() isBold() isStrikethrough() ???? TextAlignment ne marche pas ???
if (element.getElement().editAsText) {
result += element.getElement().asText().getText();
// get formatting
fontColor = element.getElement().asText().getForegroundColor();
background = element.getElement().asText().getBackgroundColor();
font = element.getElement().asText() .getFontFamily();
fontWeight = element.getElement().asText().getFontSize();
TextAlignment = element.getElement().asText().getTextAlignment();
if(element.getElement().asText().isUnderline() )
ok_underline = 1;
if(element.getElement().asText().isItalic() )
ok_italis = 1;
if(element.getElement().asText().isBold() )
ok_bold = 1;
if(element.getElement().asText().isStrikethrough() )
ok_strikethrough = 1;
}
}
var tss = SpreadsheetApp.openById(SPREADSHEET_ID);
var ts = tss.getSheetByName(SHEET_NAME);
var trange = ts.getRange(COORD_LIGNE, COORD_COLONNE); //la première cellule A1 première ligne + première colonne
trange.setBackground(background).setFontColor(fontColor).setFontFamily(font).setFontSize(fontWeight).setValue(result);
/** on va bien encadrer la valeur dans la cellule >>>> on va redimensioner la colonne **/
/** vérification pour mettre text underline / italic / bold / strikethrough **/
if ( ok_underline )
if ( ok_italis )
if ( ok_bold )
if ( ok_strikethrough )
/** i don't know how to set it in fonction of the ok variable **/
ts.autoResizeColumn(COORD_COLONNE);
}
}
Любая идея прекрасна! Спасибо большое.
Редактировать: Большое спасибо, Signo, это было очень полезно. Мой код уже отредактирован:
if(element.getElement().asText().isUnderline() )
ok_underline = 1;
Logger.log("Value of ok_underline is " + ok_underline);
if(element.getElement().asText().isItalic() )
ok_italis = 1;
if(element.getElement().asText().isBold() )
ok_bold = 1;
if(element.getElement().asText().isStrikethrough() )
ok_strikethrough = 1;
}
}
var tss = SpreadsheetApp.openById(SPREADSHEET_ID);
var ts = tss.getSheetByName(SHEET_NAME);
var trange = ts.getRange(COORD_LIGNE, COORD_COLONNE); //la première cellule A1 première ligne + première colonne
trange.setBackground(background).setFontColor(fontColor).setFontFamily(font).setFontSize(fontWeight).setValue(result);
/** on va bien encadrer la valeur dans la cellule >>>> on va redimensioner la colonne **/
/** vérification pour mettre text underline / italic / bold / strikethrough **/
if ( ok_underline ) {
trange.setFontLine("underline");
Logger.log("Call setFontLine() method ");
}
и это мой результат. Unline не работает, где будет проблема? ![The undeline doesn't work where would be the problem?](https://i.stack.imgur.com/PkW5B.png)