使用带有公式

时间:2017-10-31 23:30:16

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

所以我按照本教程创建了一个Telegram bot,它会将所有消息发送到我的电子表格:https://www.youtube.com/watch?v=mKSXd_od4Lg

关键是我只需要一个变量 - 文本。所以我稍微修改了一下代码:

  function doPost(e) {
  var data = JSON.parse(e.postData.contents);
  var text = data.message.text;
  var id = data.message.chat.id;
  var name = data.message.chat.first_name + " " + data.message.chat.last_name;
  var answer = "Hi " + name + ", thank you for your comment " + text;
  sendText(id,answer);
  SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([text]);

我也有一些范围的公式(比如,B1:B21)。

问题是脚本会将我唯一的条目添加到A22。任何想法如何让它正常工作,即把“文本”放在A1?也许有办法将该消息('text')导入为一个字符串(单元格),而不是整行?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

要设置一个单元格的值,您需要将该单元格设为range(使用sheet.getRange())&然后使用setValue()。 e.g。

function setNewValueInLastRowOfColumnA(text){
  var sh = SpreadsheetApp.getActiveSheet();
  var lastRow = sh.getLastRow();
  var range = sh.getRange(lastRow + 1, 1); // getRange() can take 'A1' notation or (row, column) for a single cell
  range.setValue(text);
}

现在,如果您想将B#的值设置为处理A#的公式,您将获得另一个range的公式单元格&使用range.setFormula()设置公式。 e.g。

var valueRange = sh.getRange(lastRow + 1, 1);
var formulaRange = sh.getRange(lastRow + 1, 2);
var formula = '=ROW() & " " & A' + (lastRow + 1); // which will make the value of B# '# your value'
valueRange.setValue("your value");
formulaRange.setFormula(formula);