Могу ли я скопировать данные из одной электронной таблицы в новую электронную таблицу? - PullRequest
0 голосов
/ 03 июня 2019

В настоящее время я работаю над сценарием для автоматической отправки электронного письма при обновлении ячейки на основе определенного значения ячеек.Теперь я хочу взять те же самые значения, которые я получил по электронной почте, и заполнить их в новой электронной таблице и опубликовать отметку времени, когда эта строка была обновлена.В новом SS это будут A (отметка времени), B, C, D, E (BE - это данные, которые автоматически отправляются по электронной почте).

С помощью другого пользователя я смог получитьавтоматизированная система электронной почты работает.Я нашел несколько постов, задающих похожие вопросы, которые я пытался соединить вместе, чтобы посмотреть, смогу ли я заставить это работать, но у меня не было успеха.Я продолжал работать с блоками в коде, потому что я не знаю весь правильный синтаксис для google-apps-scripts.Я попытался copyTo (), duplicateSheet ().Но проблема в том, что я забочусь только об обновлении одной строки за раз, когда конкретная ячейка обновляется в строке.И все, что я нашел, это сообщения о копировании целых листов данных в новую электронную таблицу.Я подумал, что мне нужно будет определить его выше, а затем добавить copyTo () в оператор if, но каждый раз, когда я пробовал его, оператор if ломался и получал сообщение об ошибке в коде.

(у меня также естьтриггер onEdit в проекте запускает)

function sendNotification(e){ 

  var ss = e.source.getSheetByName('Datasheet'); //defines the source of 
where to look
  var cell = e.range.getA1Notation(); 
  var row = e.range.getRow(); //from the range gets the row(is important 
for calling the control owner and control ID on line 15 and 16)
  var col = e.range.getColumn(); //from the range gets the 
column(important when pulling specific columns of information)
  var cellvalue = e.range.getValue(); //this pulls whatever is inside of 
the cell. (so 'NAME' in column i)
  var subject = 'SUBJECT: '+ ss.getSheetName(); //tells the program what 
to put in the subject line of the email (ss.getSheetName() gets the name 
 of the tab of the data)
  var name = ss.getRange(row, 9).getValue(); //get column 9 for current 
row (column 9 is column i which is the control certifier)



  if (name === 'NAME' && (col === 23 || col === 24 || col === 31 || col 
=== 32) === true) {  //states: if the cell  in column i = TRUE, AND column 
(w)23, (x)24, (ae)31 OR (af)32 = changed/updated THEN execute command 
below
   var control = ss.getRange(row, 2).getValue(); //get value for column B 
in updated cell row
   var owner = ss.getRange(row, 8).getValue();   //get value for column H 
in updated cell row





    //line 21-35 is the email formatting
    //MailApp.sendEmail() sends the email if line 14 = TRUE
    // to: who the email is sent too
    //Subject = subject defined above
   //htmlBody = what is in the body of the paragraph sent


   MailApp.sendEmail({
      to: "EMAIL",
      subject: subject,
      htmlBody: "The following cell has been updated: <br><br>"+
      "<br><br>" + "The control is: " + control +
      ", <br><br>The owner is: " + owner +  
      "<br><br>The change was: " + cellvalue + "<br>" + 
      "<br><br>Thank you. <br><br><br><br>" +
        })
  }
}

В принципе, мне бы понравилось, если бы обновлялись столбцы W, X, AE или AF.помимо того, что он делает в настоящее время, отправляя мне по электронной почте информацию.Чтобы также обновить всю эту информацию в новой строке в совершенно другой электронной таблице с отметкой времени, когда она была отредактирована, чтобы я мог ее зарегистрировать.

1 Ответ

0 голосов
/ 03 июня 2019

Я понял, что это работает в рамках моего ограниченного понимания того, что вы делаете.

function notify(e){ 
  var sh=e.range.getSheet();
  var dsh=e.source.getSheetByName('Sheet161');
  var name=sh.getRange(e.range.rowStart,9).getValue();
  var col=e.range.columnStart;
  //e.source.toast('Start');
  if (sh.getRange(e.range.rowStart,9).getValue()=='NAME' && sh.getName()=='Selection') {
    //e.source.toast('Flag1');
    if (col==23 || col==24 || col==31 || col==32) {
      //e.source.toast('Flag2'  +  sh.getRange(e.range.rowStart,col).getValue());
      if(sh.getRange(e.range.rowStart,col).getValue()==true) {
        //e.source.toast('Flag3');
        var control=dsh.getRange(e.range.rowStart, 2).getValue();
        var owner=dsh.getRange(e.range.rowStart, 8).getValue();
      }
    }
    var html="The following cell has been updated: <br><br>"; 
    html+="The control is: " + control + ", <br><br>The owner is: ";
    html+=owner + "<br><br>The change was: " + e.value + "<br>" + "<br><br>Thank you. <br><br><br><br>";
    //MailApp.sendEmail({to: "EMAIL",subject: subject,htmlBody:html});
    var userInterface=HtmlService.createHtmlOutput(html);
    SpreadsheetApp.getUi().showModelessDialog(userInterface,'data' );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...