gpt4 book ai didi

javascript - 如何修复 {"result":"error","error": {"name" :"Exception"}} in google apps scripts

转载 作者:行者123 更新时间:2023-11-28 03:07:27 25 4
gpt4 key购买 nike

.gs

var sheetName = 'Sheet1'
var scriptProp = PropertiesService.getScriptProperties()

function doPost (e){
Logger.log(JSON.stringify(e))
if (!e || !e.parameter){
return;
}

var lock = LockService.getScriptLock();
lock.tryLock(10 * 1000);

try {
var ss = SpreadsheetApp.getActive();
var sheet1 = ss.getSheetByName(sheetName);
var headers = sheet1.getRange(1, 1, 1, sheet1.getLastColumn()).getValues()[0];
var nextRow = sheet1.getLastRow() + 1;
var newRow = headers.map(function(header) {
return header === 'Timestamp' ? new Date() : e.parameter[header]
});
sheet1.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);

var TEMPLATE_ID = '....ID....'
var PDF_FILE_NAME = newRow[3];
var RESULTS_FOLDER_ID = '....ID....'
var templateFile = DriveApp.getFileById(TEMPLATE_ID);
var copyFile = templateFile.makeCopy();
var copyId = copyFile.getId();
var copyDoc = DocumentApp.openById(copyId);
var copyBody = copyDoc.getActiveSection();
var headerValue;
var activeCell;
var activeRow = sheet1.getRange(nextRow, 1, 1, newRow.length).getValues();

for (var columnIndex = 0; columnIndex < headers.length; columnIndex++){
headerValue = headers[columnIndex]
activeCell = activeRow[0][columnIndex]
copyBody.replaceText('<<' + headerValue + '>>', activeCell);
copyDoc.saveAndClose();
var newFile = DriveApp.createFile(copyFile.getAs('application/pdf'));
copyFile.setTrashed(true);
newFile.setName(PDF_FILE_NAME);
if (RESULTS_FOLDER_ID !== ''){
DriveApp.getFolderById(RESULTS_FOLDER_ID).addFile(newFile)
DriveApp.removeFile(newFile)
}
}

return ..
}

catch (e){
return ContentService ..
}

finally{
lock.releaseLock()
}
}

该代码的目的是:

  • 将数据发布到 Google 表格

  • 每次使用新行数据提交新行时创建一个新的 pdf 文件

我成功收到工作表中的数据,并且在驱动器中创建了新的 pdf,但出现以下错误:

  • 我应该有 4 个更新字段,但 pdf 中只更新了第一个字段

在模板文档中,我有:Name1、Name2、Name3、Name4,如工作表标题中所示进行更新

因此,当新行提交到工作表时,例如 Tom、Mike、John、Andy - 我在 pdf Tom、Name2、Name3、Name4 中得到这一点(仅更新第一个值)

  • 提交后重定向至 {"result":"error","error":{"name":"Exception"}}

.html

<!DOCTYPE html>
<html lang="en">
<body>
<head>
<base target="_top">
</head>
<form action="....URL...." target="_blank" method="POST">
<div>
Name1
<input type="text" required name="Name1">
</div>

<div>
Name2
<input type="text" required name="Name2">
</div>

<div>
Name3
<input type="text" required name="Name3">
</div>

<div>
Name4
<input type="text" required name="Name4">
</div>

<button type="submit">Post</button>

</form>
</body>
</html>

感谢任何帮助。提前致谢

最佳答案

这个修改怎么样?请将此视为几个可能答案之一。

修改点:

  • 在您的脚本中,createFilesetTrashedfor (var columnIndex = 0; columnIndex < headers.length; columnIndex++){} 的 for 循环中运行。在这种情况下,在第一个循环中,将创建一个 PDF 文件,并且 copyFile被移至垃圾箱。我认为您的问题的原因可能是这样的。

为了避免上述情况,如何进行以下修改?

修改后的脚本:

当您的脚本修改时,请进行如下修改。

从:
for (var columnIndex = 0; columnIndex < headers.length; columnIndex++){
headerValue = headers[columnIndex]
activeCell = activeRow[0][columnIndex]
copyBody.replaceText('<<' + headerValue + '>>', activeCell);
copyDoc.saveAndClose();
var newFile = DriveApp.createFile(copyFile.getAs('application/pdf'));
copyFile.setTrashed(true);
newFile.setName(PDF_FILE_NAME);
if (RESULTS_FOLDER_ID !== ''){
DriveApp.getFolderById(RESULTS_FOLDER_ID).addFile(newFile)
DriveApp.removeFile(newFile)
}
}
到:
for (var columnIndex = 0; columnIndex < headers.length; columnIndex++){
headerValue = headers[columnIndex]
activeCell = activeRow[0][columnIndex]
copyBody.replaceText('<<' + headerValue + '>>', activeCell);
}
copyDoc.saveAndClose();
var newFile = DriveApp.createFile(copyFile.getAs('application/pdf'));
copyFile.setTrashed(true);
newFile.setName(PDF_FILE_NAME);
if (RESULTS_FOLDER_ID !== ''){
DriveApp.getFolderById(RESULTS_FOLDER_ID).addFile(newFile);
DriveApp.removeFile(newFile);
}

注意:

  • 当您修改Web Apps的脚本时,请将Web Apps重新部署为新版本。这样,最新的脚本就会反射(reflect)到 Web 应用程序中。请小心这一点。

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。当时,为了正确了解您的情况,您能否提供一个包含您的脚本的示例电子表格?借此,我想确认一下。当然,请删除您的个人信息。

关于javascript - 如何修复 {"result":"error","error": {"name" :"Exception"}} in google apps scripts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60474659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com