【问题标题】:Trying to write a custom copy/paste Google Sheets script尝试编写自定义复制/粘贴 Google 表格脚本
【发布时间】:2015-12-10 02:08:54
【问题描述】:

我正在尝试创建一个自定义 Google 表格脚本,当用户选择特定单元格并从菜单中点击自定义功能按钮时,它会复制该单元格中的数据并使用“仅值”粘贴选项。理想情况下,它也会对所选单元格正下方的接下来 8 个单元格执行相同的操作。

这可能吗?

【问题讨论】:

  • 是的,这是可能的。您可以创建自定义菜单项,或插入样式看起来像按钮的图像,并将脚本与图像相关联。您还可以使用一个简单的onEdit() 函数触发器,该触发器将在用户更新单元格时运行。您的问题很笼统,不符合 stackoverflow 规则。您应该发布您尝试过的代码。

标签: javascript google-apps-script google-sheets


【解决方案1】:

您的第一步是创建一个菜单以在电子表格中运行您的函数。你可以在这里找到文档和示例代码:https://developers.google.com/apps-script/guides/menus?hl=en

接下来,您可以只使用几种方法来完成此任务(将公式替换为其结果或“仅值”)。

您需要getActiveRange 方法、getValues 方法和setValues 方法。由于 getValues 方法不会复制公式,因此您只需将结果设置回您的活动范围即可。这些方法的文档在这里:SpreadsheetApp

您可以在包含下面 8 个单元格的范围内进行硬编码,但在此函数中,它只使用突出显示的单元格范围,这更直观(我认为)和更通用。

您的代码可能如下所示:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('Values Only', 'valuesOnlyFunction')
      .addToUi();
}

function valuesOnlyFunction() {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeRangeArr = activeRange.getValues();  
  activeRange.setValues(activeRangeArr);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多