Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
Authentication 有没有一种方法可以让用户无需手动登录即可访问Google工作表?_Authentication_Google Apps Script_Google Sheets_Drupal - Fatal编程技术网

Authentication 有没有一种方法可以让用户无需手动登录即可访问Google工作表?

Authentication 有没有一种方法可以让用户无需手动登录即可访问Google工作表?,authentication,google-apps-script,google-sheets,drupal,Authentication,Google Apps Script,Google Sheets,Drupal,我已经建立了一个GoogleApps脚本,用于验证输入到各种GoogleSheets文件中的数据。我正在寻找一种方法,允许用户访问这些谷歌工作表文件,而不必让他们手动登录 设置了各种onEdit()触发器,用于监视这些工作表文件,并在发生数据输入错误时将格式应用于单元格。我使用谷歌应用程序脚本进行验证,因为错误是通过非直接的业务逻辑确定的,这使得表单的内置数据验证不足。触发器由独立的Google Apps脚本项目设置。这种设置意味着我不能简单地共享到Google Sheets文件的链接,让人们匿

我已经建立了一个GoogleApps脚本,用于验证输入到各种GoogleSheets文件中的数据。我正在寻找一种方法,允许用户访问这些谷歌工作表文件,而不必让他们手动登录

设置了各种onEdit()触发器,用于监视这些工作表文件,并在发生数据输入错误时将格式应用于单元格。我使用谷歌应用程序脚本进行验证,因为错误是通过非直接的业务逻辑确定的,这使得表单的内置数据验证不足。触发器由独立的Google Apps脚本项目设置。这种设置意味着我不能简单地共享到Google Sheets文件的链接,让人们匿名编辑它,检查数据并格式化单元格,因为脚本需要的权限比匿名编辑所需的权限更多

我简要地看了一些GoogleAuthAPI文档,但我不是一个安全或web开发人员,所以有点困惑

我正在寻找一个解决方案,用户可以点击一个链接到一个工作表文件,并自动重定向到工作表文件,并登录到一个由我管理的谷歌帐户,该帐户已经有权访问该工作表文件(这样他们就不会用个人帐户编辑这些文件)。该链接将位于Drupal站点上,用户可能已经使用Drupal的内置登录功能登录该站点,以防出现差异。

您可以编写一个独立脚本,然后自己:
如果将电子表格的共享权限设置为“任何具有链接的人都可以编辑”,则编辑电子表格的每个用户(包括匿名用户)都将导致触发器运行。只需确保在编写脚本后手动运行一次,之后每次编辑都会自动运行。

这是一个有趣的问题,但由于您没有包含任何代码,并且正在征求一般建议,因此堆栈溢出是“离题”的。你可以试着把@AlanWells贴出来,谢谢你的建议。我在那里贴了一个问题:很好。我看到了那个帖子。我没有确切的答案。我可能有一些想法,但它们未经测试和验证。@AlanWells我很乐意测试任何想法;我真正的问题是他们,因为我不太熟悉身份验证的世界和它的可能性,这就是我目前构建触发器的方式。我没有意识到的一点是,我可以在谷歌表单的共享菜单中进行匿名编辑。有趣的是,触发器启动并工作,但在匿名编辑后,toast消息不会显示,执行情况也不会在仪表板中得到跟踪。但这对我的案子仍然有效。非常感谢。如果您转到->
“项目名称”->“项目详细信息”->“执行”
,则不会跟踪执行情况?当您说“toast消息不显示”时,您是否将它们实现为
SpreadsheetApp.getActiveSpreadsheet().toast()
?尝试
SpreadsheetApp.openById('INSERT SHEET ID').toast()
执行结果实际上显示在那里;我错误地看了看“我的死刑”。我通过openById尝试了toast弹出窗口,但匿名编辑器仍然无法显示。如果没有看到您的代码,很难说问题出在哪里。我将其作为一个单独的问题发布在这里:
ScriptApp.newTrigger('Edit')
  .forSpreadsheet('THE_SPREADSHEET_ID')
  .onEdit()
  .create();

function Edit()
{  
//does not necessary need to be the same spreadsheet
 SpreadsheetApp.openById('THE_SPREADSHEET_ID').getActiveSheet().getRange('A20').setValue('it worked');   
}