首页 > 解决方案 > 应用程序脚本仅获取值内容

问题描述

我有以下工作正常:

function phototable() {
  var ss = SpreadsheetApp.openById('####');
  var lastRow = ss.getLastRow();
  ss.getRange('H'+lastRow)
  .setValue('=VLOOKUP("Form Responses_Images/"&B'+lastRow+',importrange("https://docs.google.com/spreadsheets/d/####/edit","Form Responses!U:Z"),4,false)');
}

但是,我不希望将公式复制到 columnH中,而只是实际值。所以我尝试了:

ss.getRange('H'+lastRow)
  .getValue('=VLOOKUP("Form Responses_Images/"&B'+lastRow+',importrange("https://docs.google.com/spreadsheets/d/###/edit","Form Responses!U:Z"),4,false)')
  .copyTo('H'+lastRow,{contentsOnly:true});

但这并没有在 H 列中插入任何内容。有什么想法吗?

标签: google-apps-scriptgoogle-sheets

解决方案


修改点:

  • 关于I have the following that works fine:,当我看到上面的脚本时,我认为在getValue. 因为getValue没有论据。我以为getValuesetValue
  • copyTo('H'+lastRow,{contentsOnly:true}),第一个参数是 thr 范围对象。
  • 为了在脚本期间将公式的结果复制为字符串,需要使用flush.

当以上几点反映到您的脚本时,它变成如下。

修改后的脚本:

function phototable() {
  var ss = SpreadsheetApp.openById('####');
  var lastRow = ss.getLastRow();
  var range = ss.getRange('H'+lastRow);
  range.setValue('=VLOOKUP("Form Responses_Images/"&B'+lastRow+',importrange("https://docs.google.com/spreadsheets/d/###/edit","Form Responses!U:Z"),4,false)');
  SpreadsheetApp.flush();
  range.copyTo(range, {contentsOnly:true});
}

笔记:

  • 在您的脚本中,ss是电子表格的第一个选项卡。请注意这一点。

参考:


推荐阅读