JavaScript脚本求助

提问:能否实现按钮点击运行JS脚本,实现当前row的某几列数据合成、并一键复制到用户剪贴板。
使用场景:
1.目前seatable里长文本的换行是以/n/n实现的,且长文本末尾为3个换行符/n/n/n,直接复制长文本单元格到别的地方,行与行之间会出现很多空格。
2.另,业务中需要把不同列的信息结合,形成一个结构化文本数据,一键粘贴到公司内网的一个信息系统里,如果能实现脚本一键复制(单列或多列信息)处理过的干净的文本,会大大提升效率。

目前我能想到的是通过python实现上述多列数据提取并整理、填充到一个长文本单元格,但是无法实现一键按钮复制,请问js目前能实现吗?

const table = base.getActiveTable();

const column = base.getColumnByName(table, '任务');
const rows = base.getRows(table, '本周任务');
const value = rows[3][column.name];
output.text(value);
const customCopy = (vaule) => {
  const id = 'custom-input'
  const dom = document.querySelector('#' + id);
  if (dom) dom.parentNode.removeChild(dom)
  
  const input = document.createElement('input')
  document.body.appendChild(input)
  input.setAttribute('id', id);
  input.setAttribute('readonly', 'readonly')
  input.setAttribute('value', value)
  input.select()
  document.execCommand('copy')
}
customCopy(value)

你可以使用 customCopy 函数复制你想复制的内容

谢谢,刚才测试了下,您的脚本是获取指定行(第4行)的数据。
目前JS不能像Python一样,获取运行脚本按键所在的当前row的数据吗?
另外,这个JS一键复制脚本,我看了下,换行符全部被清除了,多行的富文本,复制出来的多行文字成为一整段,没有多行了。我还是希望能保留多行(干净的换行符/n,而不是/n/n或者/n/n/n)。请问JS脚本能调整下吗?

找到解决办法了,把input改成textarea:

const table = base.getActiveTable();
const column = base.getColumnByName(table, '主要内容');
const rows = base.getRows(table, '调整视图');
const index = rows.length;
const value = rows[index - 1][column.name];
output.text(value)
const customCopy = (value) => {
  const id = 'custom-input'
  const dom = document.querySelector('#' + id);
  if (dom) dom.parentNode.removeChild(dom)
  const textarea = document.createElement('textarea')
  document.body.appendChild(textarea)
  textarea.setAttribute('id', id);
  textarea.setAttribute('readonly', 'readonly')
  textarea.innerHTML = value
  textarea.select()
  document.execCommand('copy')
}
customCopy(value)
1 个赞