Сценарий Google Apps: вставьте inlineImage и текст в ячейку таблицы и измените текст в ячейке
Я пытаюсь создать таблицу в Google Doc с помощью скрипта Google Apps и (1) вставить inlineImage
в ячейку (при ограничении размера изображения шириной около 120 пикселей). Затем я хотел бы (2) вставить текст в ту же ячейку под изображением и изменить размер шрифта текста.
Я создал скрипт, который может делать все эти вещи в абзаце, так что изображение вставляется с текстом под ним. Тем не менее, мне нужно уместить несколько картинок рядом. Поскольку я не думаю, что Документы Google поддерживают несколько столбцов, мне сказали, что я могу использовать таблицу (возможно, с 3 столбцами) с невидимой границей для получения аналогичного эффекта. Если есть какие-либо предложения, как я могу сделать это по-другому или какие-либо вопросы, пожалуйста, дайте мне знать.
Мой сценарий берет информацию и ссылку на изображение с листа Google и использует их для создания каталога фотографий в документе Google. Я пытаюсь разместить больше людей на одной странице, поэтому было бы полезно иметь 3 картинки рядом.
Вот что по сути делает мой скрипт:
[Изображение1]
text1
[Изображение2]
text2
Вот как бы я хотел, чтобы это выглядело: [Image1] [Image2] [Image3]
text1 text2 text3
Я вставил весь сценарий ниже для удобства (только некоторые части имеют отношение к этому обсуждению). Если вы вообще не понимаете, о чем я прошу, пожалуйста, дайте мне знать. Спасибо!
var sheetID = "xxxx"; //spreadsheet
var GDoc = DocumentApp.openByUrl("xxxx");
var body = GDoc.getBody(); //google document body
function loadSheet() {
body.clear(); //deletes previous doc contents so a new photo directory can be made
//load studentSheet
var StudentSheet = SpreadsheetApp.openById(sheetID).getSheetByName('Students');
var studentdata = StudentSheet.getDataRange().getValues();
//make variables to hold data from StudentSheet
for (var studentRowNumber = 1; studentRowNumber < studentdata.length; studentRowNumber++) { //studentdata.length determines speed of program execution
var FirstName = studentdata[studentRowNumber][1];
var LastName = studentdata[studentRowNumber][2];
var Gender = studentdata[studentRowNumber][3];
var School = studentdata[studentRowNumber][4];
var Grade = studentdata[studentRowNumber][5];
var Birthday = studentdata[studentRowNumber][6];
var StudentCellPhone = studentdata[studentRowNumber][7];
var StudentEmail = studentdata[studentRowNumber][8];
var DadFirstName = studentdata[studentRowNumber][9];
var MomFirstName = studentdata[studentRowNumber][10];
var DadLastName = studentdata[studentRowNumber][11];
var MomLastName = studentdata[studentRowNumber][12];
var DadEmail = studentdata[studentRowNumber][13];
var MomEmail = studentdata[studentRowNumber][14];
var DadCellPhone = studentdata[studentRowNumber][15];
var MomCellPhone = studentdata[studentRowNumber][16];
var HomePhone = studentdata[studentRowNumber][17];
var StreetAddress = studentdata[studentRowNumber][18];
var City = studentdata[studentRowNumber][19];
var ZipCode = studentdata[studentRowNumber][20];
var longpictureID = studentdata[studentRowNumber][21];
//verify if there is a picture uploaded for the student, and if there is then insert it in the google doc
if (longpictureID == "") {
Logger.log(FirstName + " " + LastName + ": No picture available");
}
else {
insertImageFromDrive();
}
insertData();
}
}
/** Inserts data from studentSheet variables as a paragraph beneath the image of the student **/
function insertData(){
//insert student info into google doc
var FullName = body.appendParagraph(FirstName + " " + LastName); //combine student's first and last names
//verify that both parents' names are present
if (DadFirstName == "" && MomFirstName !== "") {
//if dad's name is missing
var ParentsText = body.appendParagraph("Parents: " + MomFirstName);
}
else {
if (DadFirstName !== "" && MomFirstName == "") {
//if mom's name is missing
var ParentsText = body.appendParagraph("Parents: " + DadFirstName);
}
else {
if (DadFirstName == "" && MomFirstName == "") {
//if both parent names are missing
var ParentsText = "";
}
else {
//both parent names are given
var ParentsText = body.appendParagraph("Parents: " + DadFirstName + " & " + MomFirstName);
}
}
}
//verify that birthday is given
if (Birthday !== "") {
var BirthdayText = body.appendParagraph("Birthday: " + Birthday);
}
//verify that grade is given
if (Grade !== "") {
var GradeText = body.appendParagraph("Grade: " + Grade);
}
//verify that both parents' phone numbers are present
if (DadCellPhone == "" && MomCellPhone !== "") {
//dad's name is missing
var CellText = body.appendParagraph("Phone: " + MomCellPhone);
}
else {
if (DadCellPhone !== "" && MomCellPhone == "") {
//mom's name is missing
var CellText = body.appendParagraph("Phone: " + DadCellPhone);
}
else {
if (DadCellPhone == "" && MomCellPhone == "") {
//both parent names are missing
var CellText = "";
}
else {
//both parent names are given
var CellText = body.appendParagraph("Phone: " + "Dad - " + DadCellPhone + ", Mom - " + MomCellPhone);
}
}
}
//verify that both parents' emails are present
if (DadEmail == "" && MomEmail !== "") {
//dad's name is missing
var EmailText = body.appendParagraph("Phone: " + MomEmail);
}
else {
if (DadEmail !== "" && MomEmail == "") {
//mom's name is missing
var EmailText = body.appendParagraph("Phone: " + DadEmail);
}
else {
if (DadEmail == "" && MomEmail == "") {
//both parent names are missing
var EmailText = "";
}
else {
//both parent names are given
var EmailText = body.appendParagraph("Email: " + "Dad - " + DadEmail + ", Mom - " + MomEmail);
}
}
}
// modify text attributes
FullName.editAsText().setBold(false).setFontSize(10).setForegroundColor('#000066');
if (ParentsText !== "") {
ParentsText.editAsText().setFontSize(8).setForegroundColor(0, 8, '#FF0000');
}
if (BirthdayText !== "") {
BirthdayText.editAsText().setFontSize(8).setForegroundColor(0, 9, '#FF0000');
}
GradeText.editAsText().setFontSize(8).setForegroundColor(0, 6, '#FF0000');
if (CellText !== "") {
CellText.editAsText().setFontSize(8).setForegroundColor(0, 6, '#FF0000'); //makes first 6 characters red ("Phone:")
}
if (EmailText !== "") {
EmailText.editAsText().setFontSize(8).setForegroundColor(0, 6, '#FF0000');
}
GDoc.appendHorizontalRule(); //not to be used if the text and image are in a table
}
/** Inserts photo of the student from google drive **/
function insertImageFromDrive(){
var shortpictureID = longpictureID.replace('https://drive.google.com/uc?export=view&id=', '');
//(old, new); replace all occurences of old with new in string
var img = DriveApp.getFileById(shortpictureID).getBlob();
var inlineI = GDoc.appendImage(img);
//resizing the image
var width = inlineI.getWidth();
var newW = width;
var height = inlineI.getHeight();
var newH = height;
var ratio = width/height;
if(width>120){
//max width of image
newW = 120;
newH = parseInt(newW/ratio);
}
inlineI.setWidth(newW).setHeight(newH);
}
1 ответ
Для этого вы можете создать переменную ячейки как
var cells = [['Row 1, Cell 1', 'Row 1, Cell 2', 'Row 1, Cell 3'],
['Row 2, Cell 1', 'Row 2, Cell 2', 'Row 2, Cell 3']];
- Ряд 1 может быть изображениями для 3 студентов.
Строка 2 может быть текстом, который вы хотите добавить.
Вы также можете установить ширину границы на 0.
body.appendTable (клетка).setBorderWidth(0);
Надеюсь, это поможет!