gpt4 book ai didi

google-apps-script - 如何通过api基于插入行触发Google Apps脚本功能

转载 作者:行者123 更新时间:2023-12-04 14:54:54 25 4
gpt4 key购买 nike

  • 我有一个包含 5 列(名字、地址、SKU、报价、状态)的 Google 表格。
  • 我有一个应用程序脚本函数 (createQuote),它从 google 表格行查看上述变量的值,并创建一个 google 文档引用,将变量替换为值。
  • 我使用 Zapier 将行插入到我上面的谷歌表中。

  • 正在挣扎的是什么-:
    当通过 zapier(Google Sheet API 调用)插入新行时,我需要一种方法来触发我的 createQuote 函数。

    我尝试使用触发器但无法成功,任何帮助表示赞赏。

    谢谢你

    这是我的函数的代码-
    function quoteCreator(){

    docTemplate = "googledocidgoeshere"
    docName = "Proposal"

    var sheet = SpreadsheetApp.getActive().getSheetByName("Main")
    var values = sheet.getDataRange().getValues()
    var full_name = values[1][0]

    var copyId = DriveApp.getFileById(docTemplate).makeCopy(docName+" for "+full_name).getId()


    // Open the temporary document
    var copyDoc = DocumentApp.openById(copyId);
    // Get the document’s body section
    var copyBody = copyDoc.getActiveSection();
    // Replace place holder keys/tags,
    copyBody.replaceText("keyFullName", full_name);
    copyDoc.saveAndClose();
    // Convert temporary document to PDF by using the getAs blob conversion
    var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");

    // put the link of created quote in the quote column
    var url = DocumentApp.openById(copyId).getUrl()
    var last = sheet.getRange(2, 7, 1, 1).setValue(url)


    }

    注意-:我还没有把循环放在上面,一旦它按照我的要求开始工作,我就会这样做。

    最佳答案

    通过 Sheets API 或 Apps 脚本所做的更改不会触发 onEdit 触发器。我为此提供了两种解决方法。

    网络应用

    让任何进程更新工作表也会向您的脚本发送 GET 或 POST 请求,deployed as a web application .例如,GET 版本可能访问 https://script.google.com/.../exec?run=quoteCreator

    function doGet(e) {
    if (e.parameter.run == "quoteCreator") {
    quoteCreator();
    return ContentService.createTextOutput("Quote updated");
    }
    else {
    return ContentService.createTextOutput("Unrecognized command");
    }
    }

    Web 应用程序的发布方式应使您的其他进程可以执行上述操作;通常这意味着“每个人,甚至是匿名的”。如果安全是一个问题,添加 token 参数可能会有所帮助,例如,URL 将具有 &token=myToken其中 myToken 是 webapp 将使用 e.parameter.token 检查的字符串.

    这里使用GET方法进行说明,你可能会发现POST对于这个操作更有意义。

    重要提示:当执行由 GET 或 POST 请求触发时,方法 getActive...不可用。您需要使用 ID 或 URL 打开您需要的任何电子表格(请参阅 openByIdopenByUrl )。

    定时触发

    有一个按时间间隔(比如每 5 分钟)运行的函数来检查工作表中的行数并触发 quoteCreator如果需要的话。函数 checkNewRows在脚本属性中存储非空行的数量,因此可以检测到更改。
    function checkNewRows() {
    var sp = PropertiesService.getScriptProperties();
    var oldRows = sp.getProperty("rows") || 0;
    var newRows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main").getLastRow();
    if (newRows > oldRows) {
    sp.setProperty("rows", newRows);
    quoteCreator();
    }
    }

    关于google-apps-script - 如何通过api基于插入行触发Google Apps脚本功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47076865/

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