【问题标题】:How to get the correct range to set the value to a cell?如何获得正确的范围以将值设置为单元格?
【发布时间】:2022-01-23 19:14:33
【问题描述】:

我想通过脚本在 Google Sheet 中设置文本或数字。

我想在单元格F2 中设置Hello 或数字9。到目前为止我找到了这段代码:

SpreadsheetApp.getActiveRange().setValue('hello');

但这并没有指定哪个单元格。

【问题讨论】:

  • 我建议您通过尝试tutorials ?来阅读appscript的基础知识

标签: google-apps-script google-sheets


【解决方案1】:

解决方案: SpreadsheetApp.getActiveSheet().getRange('F2').setValue('hello')

说明:

在电子表格中附加脚本的单元格中设置值

SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME).getRange(RANGE).setValue(VALUE);

在当前打开并附加脚本的工作表单元格中设置值

SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(RANGE).setValue(VALUE);

在未附加脚本的某些电子表格的单元格中设置值(目标工作表名称已知)

SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME).getRange(RANGE).setValue(VALUE);

在未附加脚本的某些电子表格的单元格中设置值(目标工作表位置已知)

SpreadsheetApp.openById(SHEET_ID).getSheets()[POSITION].getRange(RANGE).setValue(VALUE);

这些是常量,你必须自己定义

SHEET_ID

SHEET_NAME

POSITION

VALUE

RANGE

附加到工作表的脚本是指脚本驻留在该工作表的脚本编辑器中。未附加意味着不驻留在该工作表的脚本编辑器中。它可以在任何其他地方。

【讨论】:

  • 嗨 - 关于哪个“脚本处于活动状态”我有一个我想要的 INDEX/Table 公式在 Worsheet 'FianceIndex' 的单元格 D18 中当我在单元格本身中执行公式时它没有自动刷新 - 所以我想把它放在脚本中并应用触发器。 getActiveSheet() 的问题是所有其他工作表都得到它。我该如何解决?我尝试了 "getSheetName" SpreadsheetApp.getActiveSheet().getSheetName('FinanceIndex').getRange('D18').setValue('=Dollar(Index(ImportHTML("apmex.com/silver-price","table",8),2,2))'); 我卡住了
  • 试试SpreadsheetApp.getActiveSpreadsheet().getSheetName('FinanceIndex')。否则请提出新问题stackoverflow.com/help/how-to-ask
  • 就是 Umair!谢谢
【解决方案2】:

使用Range类的setValue方法设置特定单元格的值。

function storeValue() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // ss is now the spreadsheet the script is associated with
  var sheet = ss.getSheets()[0]; // sheets are counted starting from 0
  // sheet is the first worksheet in the spreadsheet
  var cell = sheet.getRange("B2"); 
  cell.setValue(100);
}

您还可以使用行号和列号选择单元格。

var cell = sheet.getRange(2, 3); // here cell is C2

也可以一次设置多个单元格的值。

var values = [
  ["2.000", "1,000,000", "$2.99"]
];

var range = sheet.getRange("B2:D2");
range.setValues(values);

【讨论】:

    【解决方案3】:

    下面的代码做了需要做的事情

    function doTest() {
      SpreadsheetApp.getActiveSheet().getRange('F2').setValue('Hello');
    }
    

    【讨论】:

    • 如何用数字获取范围? c2单元格的坐标是多少?
    • C2 是第三列第二行所以 >> getRange(2,3) >> getRange(row,col)
    • 嗨,您现在如何获取当前单元格的行号和列号?如何为当前单元格设置值?
    • @CharlesChow 您可以使用 SpreadsheetApp.getActiveSheet().getActiveCell().getRow() 和 SpreadsheetApp.getActiveSheet().getActiveCell().getColumn()
    • 我会执行此解决方案,但我收到的消息是“您没有调用 setValue 所需的权限”。怎么了?我会在创建脚本时接受并提供身份验证。
    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2017-01-16
    相关资源
    最近更新 更多