2016-06-14 1 views
1

Я пытаюсь автоматизировать заполнение отчета, используя только Google Apps. Последовательность идет как следует:Замена текстовой метки заполнителя в ячейке таблицы Документов Google с изображением на Google Диске

Google Форма> Google Таблицы> Google Docs шаблон

Форма Google служит цели, чтобы ввести все детали для окончательного отчета: Показатель качества (1, 2 или 3), а также некоторые текст. В Google Таблицах показатель качества преобразуется в текстовую метку (# good #, # ok #, # bad #).

Я нашел сценарий здесь, в Stack Overflow, который подбирает шаблон Google Doc и заполняет метки метки-заполнителя (% placeholder%) значениями в Листе Google. Тем не менее, я не смог решить заменить знак качества на значок изображения/значок (зеленый, оранжевый и красный значок), который у меня есть на моем Диске Google. Я дошел до замены метки именем файла значка (например, icon-green.png), но не самой иконкой. Полезно знать, что метка оценки качества помещается в ячейку таблицы.

Я невероятно новичок в javascript и действительно могу использовать вашу помощь! Я указал в коде ниже, где я точно застрял (ближе к концу).

// Replace this with ID of your template document. 
var TEMPLATE_ID = '1AatkH57Iq3FwmsvZkCMYddjACItWS_XuO9sCsfcaMso' 

// You can specify a name for the new PDF file here, or leave empty to use the 
// name of the template. 
var DOC_FILE_NAME = 'First GA Doc Template Try' 

/** 
* Eventhandler for spreadsheet opening - add a menu. 
*/ 

function onOpen() { 

    SpreadsheetApp 
    .getUi() 
    .createMenu('Create Doc') 
    .addItem('Create Doc', 'createDoc') 
    .addToUi() 

} // onOpen() 

/** 
* Take the fields from the active row in the active sheet 
* and, using a Google Doc template, create a Doc with these 
* fields replacing the keys in the template. The keys are identified 
* by having a % either side, e.g. %Name%. 
* 
* @return {Object} the completed Doc file 
*/ 

function createDoc() { 

    if (TEMPLATE_ID === '') { 

    SpreadsheetApp.getUi().alert('TEMPLATE_ID needs to be defined in code.gs') 
    return 
    } 

    // Set up the docs and the spreadsheet access 

    var copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy(), 
     iconGreen = DriveApp.getFileById('0B0C0sFLzFLyWOUVSeWxQa2o2MFE'), 
     copyId = copyFile.getId(), 
     copyDoc = DocumentApp.openById(copyId), 
     copyBody = copyDoc.getActiveSection(), 
     activeSheet = SpreadsheetApp.getActiveSheet(), 
     numberOfColumns = activeSheet.getLastColumn(), 
     activeRowIndex = activeSheet.getActiveRange().getRowIndex(), 
     activeRow = activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns).getValues(), 
     headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues(), 
     columnIndex = 0 

    // Replace the keys with the spreadsheet values 

    for (;columnIndex < headerRow[0].length; columnIndex++) { 

    copyBody.replaceText('%' + headerRow[0][columnIndex] + '%', 
         activeRow[0][columnIndex])       
    } 

    copyBody.replaceText('#good#', iconGreen) // This is where I'm stuck.. 

    copyFile.setTrashed(false) 

    SpreadsheetApp.getUi().alert('New Doc created in the root of your Google Drive') 

} // createDoc() 

ответ

0

Если вы хотите, чтобы вставить изображение в Google Doc вам нужно будет получить его в качестве сгустка и вызвать функцию insertImage, что-то вроде этого:

var blob = DriveApp.getFileById(id).getBlob(); // Replace id with the ID of your icon file. 

// This is inserting it into a specific cell in an existing table. 
var newImage = curTable.getRow(imgTargetRow).getCell(imgTargetCol).insertImage(0, blob); 

    // This sets the image height and width based on my table cell sizes, but if your icon is sized exactly right you won't need to do this 
    var h = newImage.getHeight(); 
    var w = newImage.getWidth(); 
    var w = ((w > h) ? 352 : 197); // Adjust for landscape or portrait images 
    var h = 264; 
    newImage.setHeight(h); 
    newImage.setWidth(w); 
+0

Спасибо за ответ @ user2572362! Один вопрос, однако, как я могу убедиться, что он заменяет конкретный ярлык метки в моем шаблоне? Например, я хочу, чтобы определенное изображение заменяло конкретный ярлык-заполнитель, называемый% image01%. –

+0

Вы можете попробовать функцию в этом сообщении. http://stackoverflow.com/questions/20526566/insert-image-at-specific-point-of-paragraph – alfiethecoder

Смежные вопросы