仅使用Google Apps脚本粘贴数据验证 [英] Paste data validation only using Google Apps Script

查看:182
本文介绍了仅使用Google Apps脚本粘贴数据验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这一个应该是一个容易的是或否。是否可以使用Google Apps脚本粘贴数据验证?



我想要做的是让代码复制数据验证将行数据验证粘贴到活动单元格的行中。



我试过copyTo:

  function updateFormat(){
var rowNumber = SpreadsheetApp.getActiveSpreadsheet()。getActiveSelection()。getRow();
var rowAbove = rowNumber -1;
var targetRange = SpreadsheetApp.getActiveSpreadsheet()。getActiveSheet()。getRange(rowNumber,1,1,36);
var templateRange = SpreadsheetApp.getActiveSpreadsheet()。getActiveSheet()。getRange(rowAbove,1,1,36);

templateRange.copyTo(targetRange);
}

但显然 - 复制数据验证上面这一行的内容,这不是目标。



有什么想法?


$

解决方案

添加optArgument {formatOnly:true}工程(请参阅参考资料)。所以

  templateRange.copyTo(targetRange); 

变为

  templateRange.copyTo(targetRange,{formatOnly:true}); 

我重构了您的代码并使用以下方法进行了测试:

  function updateFormat(){
var sheet = SpreadsheetApp.getActiveSheet();
var rowNumber = sheet.getActiveSelection()。getRow();
var rowAbove = rowNumber -1;
var maxCols = sheet.getMaxColumns();
var rangeToCopy = sheet.getRange(rowAbove,1,1,maxCols);
rangeToCopy.copyTo(sheet.getRange(rowNumber,1,1,maxCols),{formatOnly:true});
}


This one should be an easy yes or no. Is it possible to paste data validation only with Google Apps Script?

What I want to do is have the code copy the data validation from the row above the active cell, then paste the data validation into the row of the active cell.

I tried copyTo:

function updateFormat() {
  var rowNumber = SpreadsheetApp.getActiveSpreadsheet().getActiveSelection().getRow();
  var rowAbove = rowNumber -1 ;
  var targetRange = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(rowNumber, 1, 1, 36);      
  var templateRange = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(rowAbove, 1, 1, 36);

  templateRange.copyTo(targetRange);
}

but--obviously--that copied the data validation and the contents of the row above, which is not the goal.

Any ideas?

Thanks in advance!

解决方案

Adding the optArgument {formatOnly:true} works (See Ref). So

templateRange.copyTo(targetRange);

becomes

templateRange.copyTo(targetRange, {formatOnly:true});

I've refactored your code slightly and tested using:

function updateFormat() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rowNumber = sheet.getActiveSelection().getRow();
  var rowAbove = rowNumber -1 ;
  var maxCols = sheet.getMaxColumns();
  var rangeToCopy = sheet.getRange(rowAbove, 1, 1, maxCols);
  rangeToCopy.copyTo(sheet.getRange(rowNumber, 1, 1, maxCols), {formatOnly:true});
}

这篇关于仅使用Google Apps脚本粘贴数据验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆