ERPからGAアカウントにCSVを電子メールで送信し、そのアカウントにラベルを適用するプロセスを設定しました。添付ファイルを解析し、別のGAプロジェクトのデータソースとして使用するスプレッドシートを更新したいと思います。私はいつも私の脳が配線されているかのように何かをしようとすると、内側のループに常に執着しています。基本的に私は、スプレッドシートなどのような添付のCSVファイルの静的名前のセットのタブを設定した:電子メール添付ファイルを使用してスプレッドシートを更新
*//Static array values will never change
var sheetNames = ["Wage Codes", "Phase Codes", "Cost Types", "Department"]
var csvName = ["Wage_Codes.csv", "Phase_Codes.csv", "Cost_Types.csv", "Department_Codes.csv"]*
Iは各アレイはcsvNameからデータをインポートし、sheetNamesにセルの値を設定することをループしたいです
私は、添付CSVファイルから配列を取得し、これを使用してロガーにそれらを読むことができます:
var label = "Timesheet Data"
するvarスレッド= GmailApp.getUserLabelByName(ラベル).getThreads();
//静的配列の値は するvar sheetNamesの= [ "賃金コード"、 "フェーズコード"、 "コストタイプ"、 "部門"] するvar csvName = [ "Wage_Codes.csv"、「Phase_Codesを変更することはありません。 CSV」、 『Cost_Types.csv』、 『Department_Codes.csv』]
//strip CSV attachemnts from emails and put in GDrive
var count = thread[0].getMessageCount();
for (var i = 0 ; i < count; i++) {
var attachments = thread[0].getMessages()[i].getAttachments()[0];
var csvData = Utilities.parseCsv(attachments.getDataAsString(), ",");
Logger.log(csvData);
そして、私はこれを使って、個別にダウンロードしたベースでこれを行うことができます。
における内部ループにそれを置くfunction importDeptCodes() {
var ss = SpreadsheetApp.openById('sheetID').getSheetByName('Cost Types');
var file = DriveApp.getFilesByName('Cost_Types.csv').next();
var arry = Utilities.parseCsv(file.getBlob().getDataAsString());
ss.getRange(1, 1, arry.length, arry[0].length).setValues(arry);
Logger.log(arry)
}
最初のコードサンプルは、私の脳が大きな音を立てている場所です。
yhe jのループが1つの上のレベルであり、部署シートにEVERYTHINGへの唯一の輸入の方法、それは今
function importCodes() {
var sheetNames = ["Wage Codes", "Phase Codes", "Cost Types", "Department"]
var csvName = ["Wage_Codes.csv", "Phase_Codes.csv", "Cost_Types.csv", "Department_Codes.csv"]
var ss = SpreadsheetApp.openById('sheetID');
for (var i = 0; i < sheetNames.length; i++) {
var ss = SpreadsheetApp.openById('sheetID');
var sheet = ss.getSheetByName(sheetNames.valueOf()[i]);
Logger.log(sheet.getName())
}
for (var j=0; j < csvName.length; j++) {
var file = DriveApp.getFilesByName(csvName.valueOf()[j]).next();
var arry = Utilities.parseCsv(file.getBlob().getDataAsString());
sheet.getRange(1, 1, arry.length, arry[0].length).setValues(arry);
Logger.log(sheet)
}
}
添付ファイルからCSVファイルを取得した後、あなたはプログラムで必要に応じてデータを追加/交換は、Google Appsスクリプトを使用して、既存のGoogleスプレッドシートにあなたのドライブでcsvファイルからデータをインポートすることができます。 アップロードに使用したCSVファイルまたはXLSファイルからGoogleスプレッドシートに自動的にデータをインポートする方法(http://stackoverflow.com/questions/26854563/how-アップロードからデータを自動的にインポートする - csv-or-xls-file-to-google-sheet)それが役に立てば幸い! – Teyam