google-apps-script - publicar - how to run google apps script



Criando e enviando planilhas na mesma função (1)

Eu estou tentando criar um script simples com uma função para criar novas folhas e uma função principal para enviar essas folhas por e-mail. Quando tento chamar a função para criar folhas dentro da função principal, ela envia um e-mail para folhas vazias. Aqui está uma amostra do que estou fazendo:

function createnewsheets(mainfile, newsheetname) {
  mainfile.insertSheet(newsheetname);
  var sheet = mainfile.getSheetByName(newsheetname);
  var cell = sheet.getRange("A1");
  cell.setValue("Hello");
  return sheet;   
}
function doall(){
  var mainfile = SpreadsheetApp.openByUrl('https://docs.google.com/...');
  var sheet = createnewsheets(mainfile, "random");
  ////code to send sheet as attachment in email///
}

O código completo está here .

Agora, isso envia uma planilha vazia, mas se primeiro executar createnewheets sem retornar e buscar a planilha com o nome em doeverything , ela funcionará.

Eu pensei que poderia ser um problema de espera depois de criar uma folha, então eu também tentei Utilities.sleep() mas isso não mudou nada.

Seria muito útil saber como posso melhorar. Desde já, obrigado.


O Script do Google Apps aplica as alterações feitas na Planilha Google em lotes :

Geralmente, os scripts precisam ler os dados de uma planilha, executar cálculos e, em seguida, gravar os resultados dos dados em uma planilha. O Script do Google Apps já tem alguma otimização integrada, como o uso do cache de look-ahead para recuperar o que um script provavelmente obterá e o armazenamento em cache para salvar o que provavelmente será definido.

Use SpreadsheetApp.flush() para "forçar" a aplicação das alterações que seu script fez antes de enviar as planilhas por email.

Relacionado

  • Por que usamos o SpreadsheetApp.flush () ;?




google-sheets