不允许从一个谷歌电子表格访问 [英] Not allow to access from one to other Google Spreadsheet

查看:104
本文介绍了不允许从一个谷歌电子表格访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在其他电子表格的onEdit事件中为我的Google Spreadsheet设置新的值。我得到例外:不允许采取行动。我不明白我究竟做了什么不对。我很乐意为您提供帮助,因为我只是在JS + Google Docs脚本中执行第一步。

function onEdit(e){
if(e.value ==1 )
updateValue(e);
else
Browser.msgBox(在此单元格中输入1);


函数updateValue(curRange){
//获取当前工作表中的SpreadSheet ID和Cell Index(exp:D2)
var ssCur = SpreadsheetApp.getActiveSpreadsheet ();
var sheet = ssCur.getSheets()[0];

var referenceID = sheet.getRange(curRange.range.getRow(),curRange.range.getColumn()+ 2).getValue();
var cellCoordinate = sheet.getRange(curRange.range.getRow(),curRange.range.getColumn()+ 3).getValue();

//这里仍然可以正常工作并且获得正确的值
Browser.msgBox(referenceID); //追踪字符串

尝试{
//创建远程电子表格对象 - 此字符串捕获异常
var ss = SpreadsheetApp.openById(referenceID);
//创建工作簿(表单)
Browser.msgBox(ss.getName());
var sheets = ss.getSheets();
var sheet4Update = sheets [0] .getRange(cellCoordinate).setValue('1');
}
catch(err){
Browser.msgBox(err);



$ div $解析方案

你可以修复你的代码:
1)不要调用msgBox或触发器的任何模态。打破许多事情。
2)您无法从简单触发器访问其他文档,并且它以用户身份运行,因此您可能无权访问其他内容。相反,您可以使用不同的名称(不是onEdit)安装触发器,并将其设置为在编辑文档时触发。


I trying to set new value to my Google Spreadsheet from onEdit event in other spreadsheet. I get Exception: Action not allowed. I can't understand what exactly I doing not right. I'll be glad for your help because i just doing first steps in JS + Google Docs scripting.

function onEdit(e) {
  if (e.value == "1")
    updateValue(e);
  else
    Browser.msgBox("Type 1 in this cell");
}

function updateValue(curRange) {
  //Get needed SpreadSheet ID and Cell Index (exp:D2) from current sheet
  var ssCur = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ssCur.getSheets()[0];

  var referenceID = sheet.getRange(curRange.range.getRow(), curRange.range.getColumn()+2).getValue();
  var cellCoordinate = sheet.getRange(curRange.range.getRow(), curRange.range.getColumn()+3).getValue();

  // Here still work good and get right values
  Browser.msgBox(referenceID); //tracing string

  try {
    //Create remote spreadsheet object - this string catching Exception
    var ss = SpreadsheetApp.openById(referenceID);
    //Create workbook (sheet)
    Browser.msgBox(ss.getName());
    var sheets = ss.getSheets();
    var sheet4Update = sheets[0].getRange(cellCoordinate).setValue('1');
  }
  catch(err) {
    Browser.msgBox(err);
  }
}

解决方案

You can fix your code: 1) dont call msgBox or any modals from the trigger. Breaks many things. 2) you cant access other docs from simple triggers, plus it runs as the user so you might not have permissions for other things. Instead install the trigger yourself with a different name (not onEdit) and set it to trigger when document is edited.

这篇关于不允许从一个谷歌电子表格访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆