如果满足某些条件,则复制单元

时间:2015-10-09 09:13:36

标签: if-statement google-apps-script google-sheets copy cell

我知道有很多像我这样的主题,但我对编程脚本完全不熟悉,因此我请你帮我解决以下问题:

在单元格B2中是用户名,在单元格C2中是提交者类型 - 如果提交者类型是“请求者”,那么单元格B2的用户名应该被复制到单元格AE2 - 问题是,我还想保留如果提交者类型更改并更新,则以前的用户名...

这意味着,首先提交者类型是“请求者”,然后系统应该将用户名复制到单元格AE2 - 如果我的行的提交者类型发生更改,那么已经复制的用户名不应该更改 - 了解我想要的内容?这适用于电子表格的所有行...

我尝试了代码,但遇到了以下错误:

error

也许你可以为我改进代码?

我改变了那些2:

在:

 for (var i = 1; i <= numRows; i++) {

   var userNameCell = rows.getCell(i, userNameColumn);

   var subTypeCell = rows.getCell(i, subTypeColumn);

   var sUserNameCell = rows.getCell(i, sUserNameColumn);

后:

 for (var i = 1; i <= numRows; i++) {

   var userNameCell = rows.getCell(i, userNameColumn);

   var sUserNameCell = rows.getCell(i, sUserNameColumn);

   var subTypeCell = rows.getCell(i, subTypeColumn);

现在的错误是:

new error

或者改变错了?也许你的意思是:

var userNameColumn = 2; //Column where the user name is written 

var subTypeColumn = 5; //Column where the submitter type is written ex. "Requester"

var sUserNameColumn = 3; //Column where the user name is saved

但是之后只知道一个对象(用户名)而不是2 - subTypeCell和sUserNameCell再次未定义 - 说调试器 - 代码现在看起来像那样(再次使用我的更改,因为那时2个对象只有1个已知):

code

1 个答案:

答案 0 :(得分:0)

您可以这样做:

 var userNameColumn = 2; //Column where the user name is written 
 var subTypeColumn = 3; //Column where the submitter type is written ex. "Requester"
 var sUserNameColumn = 5; //Column where the user name is saved

  function saveUserName() {
   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
   var rows  = sheet.getDataRange();
   var numRows = rows.getNumRows();

 for (var i = 1; i <= numRows; i++) {

   var userNameCell = rows.getCell(i, userNameColumn);
   var subTypeCell = rows.getCell(i, subTypeColumn);
   var sUserNameCell = rows.getCell(i, sUserNameColumn);

    if(sUserNameCell.isBlank() && subTypeCell.getValue() === 'Requester') {
  sUserNameCell.setValue(userNameCell)
   };  

  }
 }  

首先,它定义了您正在使用的列,即&#34;用户名&#34;(在脚本userNameColumn中),列为&#34;提交者类型&#34;(在脚本subTypeColumn中)和保存用户名的列(在脚本sUserNameColumn中)。每个都被分配了一个对应于电子表格中的列的数字,其中2是B,3是C,依此类推。您可以根据自己的需要进行更改。

然后我们在这个函数中创建一个名为saveUserName()的函数,我们得到当前的电子表格,我们定义我们将使用的电子表格中的范围,这里是一切,然后我们得到有数据的行数在他们中。

之后我们浏览我们定义的数据,并设置一些我们可以用于每个单元格的变量。然后我们创建if语句,如果&#34; Saved-User-Name-Cell&#34;是空的&#34;提交者 - 类型 - 单元格&#34; =&#39;请求者&#39;然后我们抓住&#34; Saved-User-Name-Cell&#34;并将其值设置为&#34; User-Name-Cell&#34;中的值。

那就是它!