如何使用google apps脚本在自定义函数中编辑自定义函数的调用单元格?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用google apps脚本在自定义函数中编辑自定义函数的调用单元格?相关的知识,希望对你有一定的参考价值。

在搜索various questions和文档后,我仍然无法编辑自定义函数的调用单元格。据the docs说:

返回当前被视为活动的单元格范围。这通常表示用户在活动工作表中选择的范围,但在自定义函数中,它指的是正在主动重新计算的单元格。

虽然这个描述是针对getActiveRange()函数的,但是假设getActiveCell()函数的方式相同。

我试图从我的自定义函数中调用一个辅助函数,它应该返回'活动单元',据我所知,它应该是自定义函数的调用单元。不工作的代码:

// returns the current active (calling) cell for use within custom functions
function callingCell() {
  return SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getActiveRange()
}

// change background colour of calling cell
function getInfoFromPublicApi(type) {
      ... // get prices using UrlFetchApp
      callingCell().setBackground('green')
      return averagePrice(prices, type)
}

我也尝试直接在自定义函数中使用SpreadsheetApp,以及使用:

SpreadsheetApp.getActiveSpreadsheet().getActiveCell()
SpreadsheetApp.getActiveSpeadsheet().getActiveRange()
答案

你可以用两种方式去做。首先,将调用单元格设置为变量。您不能像在大型函数中尝试那样将方法链接在一起。或者,您可以删除callingCell()函数,因为信息是在eventonEdit()对象中处理的。

方法1

// returns the current active (calling) cell for use within custom functions
function callingCell() {
  return SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getActiveRange();
}

// change background colour of calling cell
function getInfoFromPublicApi(type) {
  var active = callingCell();

  ... // get prices using UrlFetchApp
  active.setBackground('green')
  return averagePrice(prices, type)
}

方法2

function onEdit(e) {
  // Not sure what your `type` param is, so you'd need to test for that somehow.
  ... // get prices using UrlFetchApp
  e.getRange().setBackground('green');
  ...
}

以上是关于如何使用google apps脚本在自定义函数中编辑自定义函数的调用单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何调试Google Apps脚本(又名Logger.log登录到哪里?)

Flutter NSException:配置失败。可能是由于 GoogleService-Info.plist 中的 GOOGLE_APP_ID 无效或在自定义选项中设置造成的

Google Apps 脚本:自定义函数,仅根据条件连接多行中的首字母

Stacked IFs Google Sheets Apps 脚本

如何将.gpx文件附加到使用Google Apps脚本发送的邮件中?

Google 表单 - 使用 Google Apps 脚本在项目中添加自定义按钮“更多信息”