【问题标题】:Permission to Call SpreadsheetApp.OpenById()调用 SpreadsheetApp.OpenById() 的权限
【发布时间】:2023-03-25 00:33:01
【问题描述】:

这是问题所在,我需要从外部电子表格中读取注释,所以最近我搜索并找到了这个答案:Get cell note value 但它不适用于外部电子表格,我尝试了很多东西,但没有成功了,有人可以帮助我吗?

表 A - 示例

表 B - 获取价值 (ImportRange) - 请求

表 B - 获取价值 (ImportRange) - 返回

表 B - 获取注释(自定义脚本) - 请求失败

function getNote2(cell, token)
{
   var ss = SpreadsheetApp.openById(token)
   var range = ss.getRange(cell)
   return range.getNote();
}

【问题讨论】:

标签: google-apps-script google-sheets


【解决方案1】:

documentation 指定:

电子表格
只读(可以使用大多数 get*() 方法,但不能使用 set*())。
无法打开其他电子表格(SpreadsheetApp.openById() 或 SpreadsheetApp.openByUrl())。

很遗憾,您需要想出另一个解决方案

可能的解决方案是

  • 从 Apps 脚本编辑器运行脚本,其中的值
  • 将脚本作为自定义宏导入

无论如何你都需要稍微重写你的脚本

  • 您需要使用 setValue() 方法而不是 return 将注释设置到所选单元格(例如活动单元格)中

示例脚本

function callMe(){
  var activeCell = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell();
  var cellWithNotes = "A4";
  var id = "PASTE HERE THE SPREADSHEET ID";
  var note = getNote(cellWithNotes, id);
  activeCell.setValue(note);
}


function getNote(cell, token)
{
  var ss = SpreadsheetApp.openById(token)
  var range = ss.getRange(cell)
  return range.getNote();
}
  • 手动或以上述其他方式运行函数callMe()
  • 您可以动态检索它们,而不是硬编码 cellReferenceid,例如从一张桌子 - 取决于你的情况

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 2014-10-26
  • 2014-12-20
  • 2012-10-21
  • 2021-07-02
相关资源
最近更新 更多