- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的脚本从 Google 云端硬盘中的模板生成 pdf 文档,并根据电子表格中的列将其通过电子邮件发送给收件人,由于 DocsList 的贬值,今天停止工作。看这里:https://developers.google.com/google-apps/documents-list/
我已尝试按照本指南进行更新 https://developers.google.com/drive/web/migration用 DriveApp 更新 DocsList 的所有实例,但我无法让它工作。有人可以帮我更新此脚本以使其正常工作吗?我在这个脚本中有 6 个“DocsList”实例,我能够正确更新其中的一些,但“addFile”等其他实例似乎需要不同的格式。即使在尝试简单地查找“DocsList”并将其替换为“DriveApp”之后,我也会收到以下错误消息:
“类型错误:在对象 ProofOfCredit_CNZDTVR44N.pdf 中找不到函数 addFile。(第 45 行,文件“ProofOfCreditCode”)”
我将不胜感激任何建议和帮助,因为这种折旧破坏了我的 5 个脚本,它们与这个几乎相同。
var docTemplate = "1JAPmsrPRrRwXCVAli229C5J7Kr4xaOnfO2rmGqvYyhU";
var docName = "ProofOfCredit";
function onFormSubmit(e) {
var first_name = e.values[1];
var last_name = e.values[2];
var customer_email = e.values[3];
var order_number = e.values[4];
var brand = e.values[5];
var amount = e.values[6];
var date_of_credit = e.values[7];
var auth_code = e.values[8];
var last_4 = e.values[9];
var request_id = e.values[10];
var rep_name = e.values[11];
var copyId = DocsList.getFileById(docTemplate)
.makeCopy(docName+'_'+order_number)
.getId();
var copyDoc = DocumentApp.openById(copyId);
var copyBody = copyDoc.getActiveSection();
copyBody.replaceText('keyFirst', first_name);
copyBody.replaceText('keyLast', last_name);
copyBody.replaceText('keyBrand', brand);
copyBody.replaceText('keyAmount', amount);
copyBody.replaceText('keyCreditdate', date_of_credit);
copyBody.replaceText('keyAuth', auth_code);
copyBody.replaceText('keyRep', rep_name);
copyBody.replaceText('keyOrder', order_number);
copyBody.replaceText('keyCClast4', last_4);
copyBody.replaceText('keyRequestID', request_id);
var todaysDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy");
copyBody.replaceText('keyTodaysDate', todaysDate);
copyDoc.saveAndClose();
var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
var folder = DocsList.getFolder('Proof of Credit');
var movefile = DocsList.createFile(pdf);
movefile.addToFolder(folder);
movefile.removeFromFolder(DocsList.getRootFolder());
var subject = "Proof of Credit regarding Order Number: " + order_number;
var body = "Hello " + first_name + " " + last_name + "," + "<br /><br />"
+ "Thank you for calling " + brand + " Support. The attached document contains information "
+ "for you to reference related to the credits we have issued back to your original form of payment." + "<br /><br />"
+ "If you have any further questions or require additional assistance please let us know." + "<br /><br />"
+ "Regards," + "<br /><br />"
+ rep_name + ", Payments Department" + "<br />"
+ "test@test.com";
var cc = "test@test.com";
MailApp.sendEmail(customer_email, subject, body, {htmlBody: body, attachments: pdf, cc: cc});
DocsList.getFileById(copyId).setTrashed(true);
}
最佳答案
许多 DriveApp
方法与 DocsList
相同。因此,在许多情况下,您可以简单地将 DocsList
替换为 DriveApp
。
旧的 getFolder()
方法会出现问题。
var folder = DocsList.getFolder('Name of your folder');
在这种情况下,简单地将 DocsList
替换为 DriveApp
会给您带来问题。 DriveApp
没有getFolder()
方法。在 Google 云端硬盘中,您可以拥有多个名称相同(但 ID 不同)的文件和文件夹。旧的DocsList
、getFolder()
方法没有考虑到这种情况。使用 DriveApp
,您仍然可以按名称搜索文件夹,但返回的是一个 Folder Iterator
。在 DriveApp
中,按名称获取文件夹的方法名称略有不同;它是“文件夹”,末尾有一个“s”。 getFoldersByName(name)
复数,而不是单数。因此,即使在 98% 的情况下,按名称获取文件夹只会得到一个文件夹,您仍然需要处理 Folder Iterator
。您不需要遍历文件夹迭代器。你可以只得到第一个文件夹。无需使用编程循环,只需使用 next()
方法即可。
因此,我建议您做只需将 DocsList
替换为 DriveApp
,按名称获取文件夹的情况除外。阅读文档,修复该行代码,然后运行它。如果您遇到错误,请查看EXECUTION TRANSCRIPT,它可能会告诉您哪一行代码失败了。如果您仍然需要帮助,请始终发布失败的代码行。
此外,新的 DriveApp Folder 类没有 addToFolder()
方法。
您需要将其更改为:
folder.addFile(moveFile);
关于javascript - 如何在我的代码中将 DocsList 更新为 DriveApp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777164/
====================问题 当我使用以下代码时: Logger.log(DriveApp.getStorageUsed()) 我得到的值:6.888066988E9 该号码与 GDr
我是 Script 的新手,想知道是否可以获得有关问题的帮助。我目前正在尝试从 Google 表单提交中自动填写 Google 文档。我过去曾在一个小测试中取得成功,但自从第二次尝试使用更大的表格后,
我是 Script 的新手,想知道是否可以获得有关问题的帮助。我目前正在尝试从 Google 表单提交中自动填写 Google 文档。我过去曾在一个小测试中取得成功,但自从第二次尝试使用更大的表格后,
我有一些 Google Apps 脚本代码,用于搜索 TeamDrive 上的文件和文件夹。 我遇到的问题是,如果文件或文件夹是由我的同事创建的,当我运行脚本时,它找不到该文件。如果我创建一个文件,而
我有一些 Google Apps 脚本代码,用于搜索 TeamDrive 上的文件和文件夹。 我遇到的问题是,如果文件或文件夹是由我的同事创建的,当我运行脚本时,它找不到该文件。如果我创建一个文件,而
我从谷歌驱动器的文件夹中获取文件,然后尝试在电子表格中插入指向它们的链接。问题是使用的文件var ezIter = folderez.getFiles();似乎以随机顺序返回。我希望它们按字母顺序排列
我正在编写 appscript 代码来搜索我的驱动器中的文件。以下是我的谷歌驱动器中的文件。 t_abcd.txt p_abcd_0211.txt j_abcd.docx bwt_abcd.txt 等
Google AppScript 是一项非常有用的服务,但有一种我不了解的文件删除机制。同样的讨论适用于文件夹删除。我有 replied some questions on SO where file
我正在尝试从每行末尾的输入字段提交多行带有附件的数据。我为此使用了 Google App-Script Webapp。我成功地使用文本数据(例如日期、姓名、姓氏等)创建了一组对象,但似乎无法将附件作为
我有一个附加到表单的 Google 脚本,它可以执行一系列不同的操作,但最终会创建几个工作表副本。 该过程几个月来一直运行良好,但最近我在使用 File.makeCopy 方法时遇到以下错误 ( ht
对于 DriveApp 脚本中的逻辑,我只是有些不明白..最基本的例子: var driveFile = DriveApp.getFileById(id); // makes sense, i c
我是 Google 脚本的新手,能够操作一些代码来为项目工作,但由于以下原因它将不再工作: ReferenceError: "DocsList" is not defined.Dismiss 这是我的
对于 DriveApp 脚本中的逻辑,我只是有些不明白..最基本的例子: var driveFile = DriveApp.getFileById(id); // makes sense, i c
我一直在研究 google drive scripts。 我需要从电子表格创建一个文件夹,以防不存在具有该名称的文件夹。 但问题是,它说该文件夹存在,即使它不存在。 检查在 try 函数中进行。 像这
当我使用 DriveApp getFilesByType 时,它会为我提供大量文件。 我想知道如果我多次调用它,结果是否总是以相同的顺序返回?或者是否有办法指定顺序? 或者我应该检索所有文档然后在
我的脚本从 Google 云端硬盘中的模板生成 pdf 文档,并根据电子表格中的列将其通过电子邮件发送给收件人,由于 DocsList 的贬值,今天停止工作。看这里:https://developer
我正在尝试使用谷歌应用程序脚本在共享驱动器中创建一个新文件,以便使用共享驱动器的其他人也可以访问该文件。 DriveApp 上是否有允许我这样做的方法? 我曾尝试使用 DriveApp.getFold
新FileIterator在DriveApp该服务可让您以非常简化的方式处理文件。 // Process all files in the user's Drive. var files = Dr
我一直在为一个大项目使用 DocsList,它运行良好。最近,错误不断涌现,它们大多与获取文件夹或文件有关。研究的时候发现DriveApp已经更新了。问题是 DriveApp 没有像 DocsList
如标题所示 得到了一个脚本,该脚本正在从特定的G-Drive文件夹中获取CSV,该文件夹当前正在按特定的文件名进行过滤。 是否可以只说该文件夹中的“获取最新文件”,而不用按特定名称搜索? 询问是因为同
我是一名优秀的程序员,十分优秀!