以下代码应该收集提交的谷歌表单的响应,并创建一个谷歌文档并将它们添加到目标文件夹中。该代码使用在表单提交时激活的触发器。但是,目前提交论坛时只能创建空白pdf文件,请问是什么问题? createTrigger 函数是我用来创建在表单提交上运行代码的触发器的函数。我已经搞乱了很长一段时间,但我只用它来创建空白pdf,而不是使用表单数据创建谷歌文档。我是这方面的初学者,而且真的只对Python很感兴趣,所以要持保留态度。
function onFormSubmitTrigger() {
var formResponse = getLastFormResponse();
createDocFromFormResponse(formResponse);
}
function getLastFormResponse() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getLastRow();
var lastRowValues = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn()).getValues()[0];
return lastRowValues;
}
function createDocFromFormResponse(formResponse) {
var folderName = "Spa Job Log Repository";
var parentFolder = DriveApp.getFolderById("Spa Job Log Repository");
var targetFolder = parentFolder.getFoldersByName(folderName).next();
if (targetFolder) {
var newDoc = DocumentApp.create("Form Response Document");
var newDocFile = DriveApp.getFileById(newDoc.getId());
targetFolder.createFile(newDocFile);
var doc = DocumentApp.openById(newDoc.getId());
var body = doc.getBody();
for (var i = 0; i < formResponse.length; i++) {
body.appendParagraph("Response " + (i + 1) + ": " + formResponse[i]);
}
doc.saveAndClose();
} else {
Logger.log("Folder '" + folderName + "' not found.");
}
}
function createTrigger() {
var form = FormApp.openById('1jGAWZXcOHOfbM1uk88QMBg-yl4VdSHxynRM-NHawASQ');
ScriptApp.newTrigger('onFormSubmitTrigger')
.forForm(form)
.onFormSubmit()
.create();
}
createTrigger 函数是我用来创建在表单提交上运行代码的触发器的函数。我已经搞乱了很长一段时间,但我只用它来创建空白pdf,而不是使用表单数据创建谷歌文档。我是这方面的初学者,而且真的只对Python很感兴趣,所以要持保留态度。
我相信您的目标如下。
targetFolder
。targetFolder.createFile(newDocFile);
,创建的文档将转换为 PDF 格式,并将 PDF 文件放入 targetFolder
。在现阶段,当createFile
创建Google Docs文件(文档、电子表格、幻灯片)时,mimeType会自动转换为PDF。我猜这就是您当前问题的原因。当这些点都体现在你的脚本中时,下面的修改如何?
在此修改中,修改了功能
createDocFromFormResponse
。
function createDocFromFormResponse(formResponse) {
var folderName = "Spa Job Log Repository";
var parentFolder = DriveApp.getFolderById("###"); // Please set your folder ID.
var targetFolder = parentFolder.getFoldersByName(folderName).next();
if (targetFolder) {
var newDoc = DocumentApp.create("Form Response Document");
var newDocFile = DriveApp.getFileById(newDoc.getId());
newDocFile.moveTo(targetFolder);
var doc = DocumentApp.openById(newDoc.getId());
var body = doc.getBody();
for (var i = 0; i < formResponse.length; i++) {
body.appendParagraph("Response " + (i + 1) + ": " + formResponse[i]);
}
doc.saveAndClose();
// targetFolder.createFile(doc.getBlob()); // If you want to also create a PDF file into "targetFolder", please use this line.
} else {
Logger.log("Folder '" + folderName + "' not found.");
}
}
var parentFolder = DriveApp.getFolderById("Spa Job Log Repository");
处,如果您使用文件夹名称 getFolderById
,则会发生错误。请注意这一点。