当前位置: 首页 > 知识库问答 >
问题:

文件夹。hasNext()从Google Sheets返回false,但直接从Google脚本调用时返回true

谭毅然
2023-03-14

概述

我正在为我的谷歌表格做一个脚本。

我有一个助手方法,它将电子邮件作为参数(字符串),然后将该电子邮件邀请到google驱动器文件夹。

我还有edit()函数,每当Google Sheets中的字段发生更改时,就会调用该函数。

问题:

当助手方法被调用本身从谷歌脚本它的工作正常,我得到了一个邀请。当我在谷歌工作表中时,助手方法从edit()触发时,它不会一路发送邀请。它在返回false的同时函数处停止:

 var newFolder = DriveApp.getFoldersByName("New Folder");
  Logger.log(newFolder.hasNext());
  while(newFolder.hasNext()) {      -> returns false while in google sheets
    var folder = newFolder.next();
    Logger.log("folder -> " + folder);  
    folder.addViewer(newPersonEmail);
  } 

我尝试的是:

记录器。日志显示newFolder。hasNext()返回false,而脚本从edit()函数调用(当我在google工作表中进行更改时)。但当我在Google脚本中调试函数时,它返回true。


共有1个答案

沈飞舟
2023-03-14

您必须为特定用户注册edit()。简单的onEdit触发器是不可能的。

返回false,因为当前用户没有任何内容。这是真的。

======已更新=====

至于我,我认为每当我们需要用户的作用域时,为用户创建触发器是正常的。假设我们需要强制用户注册触发器。他必须运行regTrigger()

/**
 * @param {GoogleAppsScript.Events.SheetsOnEdit} e
 */
function edit(e) {
  // there is the edit eveng action
}

/**
 * Register trigger
 * @returns {GoogleAppsScript.Script.Trigger}
 */
function regTrigger() {
  var activeSpreadsheet = SpreadsheetApp.getActive();
  var triggers = ScriptApp.getUserTriggers(activeSpreadsheet).filter(function(
    trigger
  ) {
    return (
      trigger.getEventType() === ScriptApp.EventType.ON_EDIT &&
      trigger.getHandlerFunction() === 'edit'
    );
  });

  if (triggers.length) return triggers[0];

  return ScriptApp.newTrigger('edit')
    .forSpreadsheet(activeSpreadsheet)
    .onEdit()
    .create();
}

现在,您的任务是让用户有机会执行此功能一次(regTrigger)。例如,从菜单。或者在打开表强制执行某些事件时使其发生。

 类似资料:
  • 问题内容: 我正在使用apache commons fileupload流api。但是FileItemIterator 在其hasNext()中返回false 怎么了? 代码和Web部件如下: jsp页面如下: 最好, 问题答案: 在我的web.xml文件中。有一个过滤器 当我卸下过滤器后,问题就解决了…

  • 问题内容: 我想从PHP脚本返回JSON。 我只是回应结果吗?我必须设置标题吗? 问题答案: 通常,没有它会没事,但是您可以并且应该设置Content-Type标头: 如果不使用特定的框架,通常会允许一些请求参数来修改输出行为。通常,为了快速进行故障排除,不发送标头,或者有时将数据有效载荷print_r盯着它很有用(尽管在大多数情况下,它不是必需的)。

  • 问题内容: 当我尝试从Java代码中删除tomcat服务器conf / Catalina / localhost中存在的文件时,file.delete()始终返回false。但是,如果我通过file.exists()函数检查文件,它将返回true。我没有任何例外。请帮助我们为什么会这样。有什么解决方案? 问题答案: 当我尝试从Java代码中删除tomcat服务器conf / Catalina /

  • 在WordPress主题中,当一个联系人表单完成时,一条消息会写在页面上,但不会写在我想要的位置。但是当在PHP代码中更改消息的位置时,联系人表单中的段落(写在文章中)不再显示。事实上,我认为方法返回false,因此不会调用方法。 以下是原始代码: 我希望它是这样的: 如你所见,我只更改了确认消息的位置。但是在第二种方式中,具有的条件似乎不是真的,因为我在文章中写的文本没有显示出来。 有人能帮我解

  • 问题内容: 我试图从用户连续读取输入,直到用户键入退出为止。我仅通过输入“ quit”进行测试,但console.hasNext()似乎未返回false。实际上,似乎该程序在第7行(hasNext()行)上被阻止。有任何想法吗? 问题答案: 如果将your 声明为,它将询问是否要接收下一个值。然后,该类将等待用户输入内容,然后返回true。 保留文件之类的东西,其中输入大小是固定的。这样,当查询文

  • 问题内容: 如何从作为Tkinter回调执行的函数中获取返回的对象? 显然,这是一个简化的示例。实际上,按钮调用的函数将返回对象,我希望将这些对象附加到将保留在主Python名称空间中的对象列表中,以进行进一步的操作。 无论如何,在这里用户可以使用GUI选择该函数的自变量,然后按下将执行该函数的按钮。但是,该函数的返回值似乎注定会丢失给以太,因为回调函数将不接受返回值。在不使用丑陋的定义的情况下可