如何编写将图像输出到Google电子表格的自定义函数?

时间:2015-02-25 16:47:40

标签: google-apps-script google-sheets custom-function

我正在使用Google云端硬盘电子表格。

是否可以创建自定义功能/脚本来显示图像?

我的想法是,当我输入函数(= tick)时,刻度线图像将显示在单元格中。

1 个答案:

答案 0 :(得分:2)

您可以将Unicode字符插入Google电子表格的单元格中:

  

= CHAR(HEX2DEC(“2713”))

在单元格中插入复选标记。

一种选择是使用onEdit()简单触发器来检查输入到当前单元格的内容:

function onEdit(e) {
  Logger.log("onEdit ran" + e);
  var input = e.value;

  if (input === "inputTick") {
    var whatCell = e.range;
    //Run a function named insertTick and pass the range
    insertTick(whatCell);
  }; 
};

在上面的例子中,用户需要在单元格中输入“inputTick”。

是一个将图像插入单元格的函数:

Google Documentation =IMAGE()

一种可能的语法:

  

IMAGE(网址,模式)

您可以使用代码

将公式设置(插入)到单元格中
var cell = sheet.getRange("B5");
cell.setFormula("=IMAGE(url, mode)");

这是一个获取传递的单元格位置的函数,并插入一个函数 带有复选标记的Unicode字符。

function insertTick(argWhatCell) {
  Logger.log(argWhatCell);
  //Insert a formula into a cell that converts HEX to a Character
  argWhatCell.setFormula("=CHAR( HEX2DEC( "2713" ))");
}

上面的代码插入一个函数,然后将Unicode转换为复选标记。

如果要插入无法使用Unicode显示的图像,则此功能可能有效:

function insertTick(argWhatCell) {
  Logger.log(argWhatCell);
  var rngValues = argWhatCell.getValue();

  Logger.log(rngValues);
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  //Get row and column
  var row = argWhatCell.getRow();
  var column = argWhatCell.getColumn();

  Logger.log(row + " : " + column);

  //Insert an image by URL
  ss.insertImage(url, column, row)
}

上面的代码,使用insertImage()在单元格的位置插入图像,但图像不在单元格内。