我制作了带有二维码的员工考勤表。工作表中的所有信息都是与谷歌幻灯片合并的邮件,所以我有一份文件,其中包含员工必须工作的所有信息以及什么职位。一切正常,所有信息都在幻灯片中可见,包括 QR 图像。
唯一的问题是图像在文档中太小了。我的问题是:如何增加二维码的大小来填写表格?我已经在幻灯片上创建了。我想与您分享代码和幻灯片中的示例。
我的表:
生成的幻灯片示例:
https://docs.google.com/presentation/d/1mK9WZSg9ozCNLNwONCdJEiBKWGWbHvqGKdwKawzQTzs/edit?usp=sharing
代码示例:
function mailMergeSlidesFromSheets() {
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getDataRange();
sheetContents = dataRange.getDisplayValues(); // Modified
sheetContents.shift();
var updatedContents = [];
var check = 0;
sheetContents.forEach(function (row) {
if (row[3] == "" && ["JA", "YES"].includes(row[14])) { // Modified
check++;
var slides = createSlidesFromRow(row);
var slidesId = slides.getId();
var slidesUrl = `https://docs.google.com/presentation/d/${slidesId}/edit`;
updatedContents.push([slidesUrl]);
slides.saveAndClose();
var pdf = UrlFetchApp.fetch(`https://docs.google.com/feeds/download/presentations/Export?exportFormat=pdf&id=${slidesId}`, { headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() } }).getBlob().setName(slides.getName() + ".pdf");
DriveApp.getFolderById("1XvQ_d5Vxj7Uud0h9u_nucgkiR8Zt8RCI").createFile(pdf);
// Or DriveApp.getFolderById("###folderId###").createFile(pdf);
} else {
updatedContents.push([row[3]]);
}
});
if (check == 0) return;
sheet.getRange(2, 4, updatedContents.length).setValues(updatedContents);
}
function createSlidesFromRow(row) {
// Create a copy of the Slides template
var deck = createCopyOfSlidesTemplate();
// Rename the deck using the firstname and lastname of the student
deck.setName(row[0] + " " + row[6] +" " + row[5] +" " + row[13] +" " + row[10] + " " +row[11]);
// Replace template variables using the student's information.
deck.replaceAllText("{{id}}", row[0]);
deck.replaceAllText("{{tag}}", row[5]);
deck.replaceAllText("{{besetzung}}", row[6]);
deck.replaceAllText("{{beginn}}", row[7]);
deck.replaceAllText("{{ende}}", row[8]);
deck.replaceAllText("{{gesamt}}", row[9]);
deck.replaceAllText("{{halle}}", row[10]);
deck.replaceAllText("{{stand}}", row[11]);
deck.replaceAllText("{{firma}}", row[2]);
deck.replaceAllText("{{veranstaltung}}", row[13]);
deck.replaceAllText("{{stw}}", row[20]);
deck.replaceAllText("{{stwfl}}", row[21]);
deck.replaceAllText("{{brwfl}}", row[22]);
deck.replaceAllText("{{hawa}}", row[23]);
deck.replaceAllText("{{zusatz}}", row[24]);
deck.replaceAllText("{{ess}}", row[25]);
deck.replaceAllText("{{and}}", row[26]);
deck.replaceAllText("{{subs}}", row[27]);
deck.replaceAllText("{{sonst}}", row[28]);
deck.replaceAllText("{{pos}}", row[29]);
deck.getSlides()[0].getShapes().find(s => s.getText().asString().trim().toUpperCase() == "{{IMAGE}}").replaceWithImage(`https://chart.googleapis.com/chart?chs=500x500&cht=qr&chl=${row[18]}`);
return deck;
}
function createCopyOfSlidesTemplate() {
//
var TEMPLATE_ID = "1AGNLRRCaZBYf2DVCU4gysZFiYR5AUCunWPFFNMqcWmU";
// Create a copy of the file using DriveApp
var copy = DriveApp.getFileById(TEMPLATE_ID).makeCopy();
// Load the copy using the SlidesApp.
var slides = SlidesApp.openById(copy.getId());
return slides;
}
function onOpen() {
// Create a custom menu to make it easy to run the Mail Merge
// script from the sheet.
SpreadsheetApp.getUi().createMenu("⚙️ Erstelle Nachweise by Pavlos")
.addItem("Create Slides","mailMergeSlidesFromSheets")
.addToUi();
}