Создание вкладки Журнал отправленных данных с использованием скрипта Google Sheets Apps - PullRequest
1 голос
/ 11 октября 2019

Я создаю службу отправки текстовых сообщений в Google Sheets, используя Google Apps Script и службу SMS Twilio. Мне удалось успешно создать эту службу, но теперь я хочу добавить «Журнал отправлений» на другой вкладке, чтобы я мог видеть исторический список телефонных номеров, дату и статус их сообщения, а такжетекст сообщения, включенный в этот текст.

Номера телефонов, дата и статус, а также текст сообщения уже существуют на листе. Однако тело сообщения отличается от двух других значений тем, что оно одинаково для всех сообщений и не повторяется в каждой строке, как другие. В моих попытках скопировать информацию на другой лист и добавить новую строку в журнал для каждого отправленного сообщения, я только смог скопировать номер телефона получателя и столбцы статуса + даты. Я хочу создать журнал, который включает все 3 - номер телефона, статус + дату и текст сообщения с использованием сценария.

Лист Google - https://docs.google.com/spreadsheets/d/1Ni3Wj8MLH6Advcie5Wbu9A5sSj52OY5UV2dgqLU5MSk/edit?usp=sharing

Номера телефонов моих получателей, статус идата отправки и текст сообщения находятся на вкладке «Список рассылки». Заранее спасибо.

function AddRowsToLog(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = ss.getSheetByName('Sending List');
  var outputSheet = ss.getSheetByName('Log');
  var msg = ss.getSheetByName('Sending List').getRange('E1').getValues();
  var dataRows = dataSheet.getLastRow() - 1;
  var dataValues = dataSheet.getRange(2,1,dataRows,2).getValues(); 
//How do I choose the content without selecting it and still have it be dynamic so that even if
//I have a different number of recipients each time, the number of rows logged match up?
 
  for (var i = 0; i < dataRows; i++) {
   Logger.log([dataValues[i],msg]);
   outputSheet.appendRow([dataValues[i],msg]);   
  }
}

1 Ответ

1 голос
/ 12 октября 2019

Попробуйте:

function AddRowsToLog(){
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet=ss.getSheetByName('Sending List');
  var outputSheet = ss.getSheetByName('Log');
  var msg = dataSheet.getRange('E1').getValue();
  var dataValues = dataSheet.getRange(2,1,dataSheet.getLastRow()-1,3).getValues(); 
  for(var i=0;i<dataValues.length;i++) {
    dataValues[i].splice(dataValues[i].length,0,msg);//splice msg to end of row
    outputSheet.appendRow(dataValues[i]);   
  }
}

На самом деле, это намного быстрее:

function AddRowsToLog(){
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet=ss.getSheetByName('Sending List');
  var outputSheet = ss.getSheetByName('Log');
  var msg = dataSheet.getRange('E1').getValue();
  var dataValues = dataSheet.getRange(2,1,dataSheet.getLastRow()-1,3).getValues(); 
  for(var i=0;i<dataValues.length;i++) {
    dataValues[i].splice(dataValues[i].length,0,msg);
    //outputSheet.appendRow(dataValues[i]);   
  }
  outputSheet.getRange(outputSheet.getLastRow()+1,1,dataValues.length,dataValues[0].length).setValues(dataValues);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...