Я пытаюсь автоматизировать заполнение отчета, используя только 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()
Спасибо за ответ @ user2572362! Один вопрос, однако, как я могу убедиться, что он заменяет конкретный ярлык метки в моем шаблоне? Например, я хочу, чтобы определенное изображение заменяло конкретный ярлык-заполнитель, называемый% image01%. –
Вы можете попробовать функцию в этом сообщении. http://stackoverflow.com/questions/20526566/insert-image-at-specific-point-of-paragraph – alfiethecoder