Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google应用程序脚本最大执行时间问题_Javascript_Html_Google Apps Script_Google Sheets_Google Apps Script Editor - Fatal编程技术网

Javascript Google应用程序脚本最大执行时间问题

Javascript Google应用程序脚本最大执行时间问题,javascript,html,google-apps-script,google-sheets,google-apps-script-editor,Javascript,Html,Google Apps Script,Google Sheets,Google Apps Script Editor,我不熟悉编码,最近我创建了一个Google脚本(基于其他两个脚本),它执行以下操作: 按主题行搜索Gmail草稿 获取Gmail草稿并将其用作模板,以创建具有唯一附件的多个草稿 在创建草稿后放置确认短语 代码如下: //更改这些名称以匹配您用于电子邮件接收地址和合并状态列的列名// var RECIPIENT_COL=“Email”; var MERGE_STATUS_COL=“M”; //创建菜单项“邮件合并”,以便用户在下拉列表中运行脚本// 功能开启(e){ var ui=Spreadsh

我不熟悉编码,最近我创建了一个Google脚本(基于其他两个脚本),它执行以下操作:

  • 按主题行搜索Gmail草稿
  • 获取Gmail草稿并将其用作模板,以创建具有唯一附件的多个草稿
  • 在创建草稿后放置确认短语
  • 代码如下:

    //更改这些名称以匹配您用于电子邮件接收地址和合并状态列的列名//
    var RECIPIENT_COL=“Email”;
    var MERGE_STATUS_COL=“M”;
    //创建菜单项“邮件合并”,以便用户在下拉列表中运行脚本//
    功能开启(e){
    var ui=SpreadsheetApp.getUi();
    ui.createMenu(“邮件合并”)
    
    .addItem(“根据我在您发布的代码中看到的内容,您必须以以下方式编辑
    createDrafts
    函数:

    • 编辑函数的触发方式:必须使用HTMLUI元素在其中运行javascript
    • 编辑
      while
      循环,使其在达到批次限制时具有
      return
      语句
    • 在HTML ui元素中创建一个Javascript函数,该函数处理
      createDrafts
      函数的成功,并在返回
      continuationToken
      时递归调用该函数
    片段 UI组件 您可以保留自定义菜单,然后单击“将此HTML添加到UI对话框”

    -code.gs-
    //创建菜单项“邮件合并”,以便用户在下拉列表中运行脚本//
    功能开启(e){
    var ui=SpreadsheetApp.getUi();
    ui.createMenu(“邮件合并”)
    
    .addItem('您必须比
    更具体,需要一些帮助
    我希望能够以小批量(10个文件)处理脚本中的行,然后返回客户端再次调用服务器并处理新的批处理(如我发布的第二个脚本中的批处理).这样做,据我所知,计时器将被重置,我将永远不会接近6分钟的限制。但我不确定如何做到这一点。这就是为什么我需要帮助,所以您只需使用google.script.run.withSuccessHandler().runBatch(obj);和对象包含运行另一个批处理所需的所有信息。在每个批处理结束时,将信息存储在properties services或cache service中,以便在启动另一个批处理时,它具有下一批处理的当前信息。然后返回到.withSuccessHandler()在每一批之后。然后你可以使用计时器开始另一批。你仍然必须保持在每天的配额内。哇!非常感谢你的回复。你说得很清楚,现在它似乎正在工作。我现在唯一的两个小问题是html文件中的这些代码行没有更新草稿的数量创建:
    var nbofficeleprocessedel=document.getElementById(“nbofficeleprocessed”);nbofficeleprocessedel.innerHTML=parseInt(nbofficeleprocessedel.innerHTML)+10;
    此外,我正在努力寻找插入确认短语(草稿)的方法在处理每批10之后。这些更改将帮助我查看脚本是否成功运行。您是否将
    0
    放在html对话框中?“此外,我正在努力寻找在处理每批10之后插入确认短语(草稿)的方法。”你是什么意思?哪个代码指令插入确认短语?如果此解决方案解决了你的问题,你应该接受答案,并针对你的其他问题提出另一个问题。这将使你的帖子对堆栈溢出社区中的其他人有用,并使事情更有条理。谢谢!我确实放了你提到的代码行但它不会更新html文件。这是我原始脚本中的代码,用于输入确认短语:
    sheet.getRange(“a”+(rowIdx+2)).setValue(“DRAFT”);
    它输入一个词“DRAFT”在处理完所有行后的第一列中。当有大约10-20行要处理时,它很有用,但对于大约100行,它是无用的,因为除非您转到草稿文件夹并重新加载它或等待脚本停止,否则没有任何视觉指示符表明脚本实际上工作正常。是的,我接受您的回答.嘿,Michael,你刚刚投了更高的票..亲爱的Alessandro,我刚刚运行了一个最终测试,大约有70行,每行有两个附件,经过大约6分钟的工作后,修改后的脚本仍然会停止。也许我做错了什么,但出于某种原因,它没有任何效果。