Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Google apps script Folders.hasNext()从Google Sheets返回false,但直接从Google脚本调用时返回true_Google Apps Script_Google Sheets_Google Docs - Fatal编程技术网

Google apps script Folders.hasNext()从Google Sheets返回false,但直接从Google脚本调用时返回true

Google apps script Folders.hasNext()从Google Sheets返回false,但直接从Google脚本调用时返回true,google-apps-script,google-sheets,google-docs,Google Apps Script,Google Sheets,Google Docs,概述 我正在为我的谷歌工作表制作一个脚本 我有一个助手方法,它将电子邮件作为参数(字符串),然后将该电子邮件邀请到google驱动器文件夹 我还有edit()函数,每当Google Sheets中的字段发生更改时,就会调用该函数 问题: 当helper方法从Google脚本中自己调用时,它工作正常,我收到了一个邀请。 当在google sheets中即时消息时,从edit()触发helper方法时,它不会一直发送邀请。它在while函数处停止,该函数返回false: var newFolde

概述

我正在为我的谷歌工作表制作一个脚本

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

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


问题:

当helper方法从Google脚本中自己调用时,它工作正常,我收到了一个邀请。 当在google sheets中即时消息时,从edit()触发helper方法时,它不会一直发送邀请。它在while函数处停止,该函数返回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);
  } 

我的尝试:

Logger.log
显示
newFolder.hasNext()
在脚本运行时返回false 从
edit()
函数调用(当我在google中进行更改时 床单)。但当我在Google中调试函数时,它返回true
脚本。

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

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

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

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


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

我明白了。你能给我更多的指导吗,我没有谷歌脚本的经验。如何将其注册到特定用户?@TheGarrus请检查我消息的上次更新。谢谢。我怎样才能通过电子邮件发送布尔值到OnTigger函数?我让它运行onEdit,但它也需要有这些参数。
/**
 * @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();
}