繁体   English   中英

使用谷歌表格脚本 function SpreadsheetApp.openById 触发 onEdit 时出现权限错误 - 如何解决

[英]privilege error on trigger onEdit with google sheets script function SpreadsheetApp.openById - How to solve

我尝试在 a.gs.function 中打开一个远程谷歌电子表格,如下所示:

function openOLT35A001T() {
  // Datenbank-Spreadsheet
  const cSSOLT = SpreadsheetApp.openById('16EBPA1TeOoMgn9fBmCJN8LwIMEGEYBSEvvxxxxxx');
  // Tabelle Worksheet
  const cOLT35A001T = cSSOLT.getSheetByName('OLT35A001T');

  return cOLT35A001T;
}// openOLT35A001T

它在 another.gs-function 中工作,没有这样的问题:

function lkpRecord_OLT35A001T() {

 const cOLT35A001T = openOLT35A001T(); 

 var vDataRange = cOLT35A001T.getRange("A2:E").getValues();
 Logger.log("vDataRange :" + vDataRange);

}//lkpRecord_OLT35A001T

但是,如果我从 OnEdit-Trigger 中调用 function,则会收到权限错误:

function onEdit(e) {
 if(e.source.getSheetName() === "FRM35A001T" && e.range.getA1Notation() === "C5") {
  lkpRecord_OLT35A001T();
 }
Exception: Sie sind nicht berechtigt, SpreadsheetApp.openById anzurufen. Erforderliche Berechtigungen: https://www.googleapis.com/auth/spreadsheets
    at openOLT35A001T(FRM35A001T:13:33)
    at lkpRecord_OLT35A001T(FRM35A001T:45:22)
    at onEdit(Code:7:3)

为什么会这样以及如何解决?

如果我将 SpreadsheetApp.openById 放在 function 之外,我会得到相同的行为,假设是一个全局常量。

最好像这样编写您的 function :

function lkpRecord_OLT35A001T() {
  const cOLT35A001T = openOLT35A001T();
  var vDataRange = cOLT35A001T.getRange(2,5,cOLT35A001T.getLastRow() - 1,5).getValues();
  Logger.log("vDataRange :" + vDataRange);
}

使用带有 A1 表示法的不确定范围总是会导致数据集的值为零。 我希望这会有所帮助,但 function 还可以做很多其他事情,我真的不知道您要完成什么,所以如果没有更多信息,我无法进一步了解 go。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM