0
現在、別のスプレッドシートからグラブ値を取得して、それを宛先スプレッドシートに貼り付けようとしています。私が実行している問題は、このコードを実行すると不正な範囲の高さと不正確な範囲の幅が得られることです。私は2次元配列について何かを読んだが、スプレッドシートに貼り付けるために2次元配列を既に持っていると思う。あなたの時間をありがとう。範囲の高さが正しくない - Google Appsスクリプト
function GmailToDrive_StaticTest(gmailSubject, importFileID){
var threads = GmailApp.search('subject:' + gmailSubject + ' -label:uploaded has:attachment'); // performs Gmail query for email threads
for (var i in threads){
var messages = threads[i].getMessages(); // finds all messages of threads returned by the query
for (var j in messages){
var attachments = messages[j].getAttachments(); // finds all attachments of found messages
var timestamp = messages[j].getDate(); // receives timestamp of each found message
var timestampMinusOne = new Date(timestamp.getTime() - (86400000)); // sets the received timestamp to exactly one day prior (# in milliseconds)
var date = Utilities.formatDate(timestampMinusOne, "MST", "yyyy-MM-dd"); // cleans the timestamp string
for (var k in attachments){
var blobs = {
dataType: attachments[k].getContentType(), // retrives the file types of the attachments
data: attachments[k].copyBlob(), // creates blob files for every attachment
fileName: attachments[k].getName()
};
var tempFile = DriveApp.createFile(blobs.data.setContentType('text/csv')).setName(blobs.fileName.split("-", 1).toString() + date); // creates csv files in drive's root per blob file
var tempFileConverted = Drive.Files.copy({}, tempFile.getId(), {convert: true}); // converts created files to gsheets
var importData = {
file: tempFileConverted,
ID: tempFileConverted.getId(),
Sheet1: SpreadsheetApp.openById(tempFileConverted.getId()).getActiveSheet(),
Sheet1_Values: SpreadsheetApp.openById(tempFileConverted.getId()).getActiveSheet().getDataRange().getValues()
};
tempFile.setTrashed(true);
var importData_Sheet1_Rows = importData.Sheet1.getMaxRows(); - 2;
var importData_Sheet1_Columns = importData.Sheet1.getMaxColumns(); - 2;
var destSheet = SpreadsheetApp.openById(importFileID).getSheets()[0];
destSheet.clearContents();
Logger.log(importData.Sheet1_Values)
destSheet.getRange(1, 1, importData_Sheet1_Rows, importData_Sheet1_Columns).setValues(importData.Sheet1_Values);
DriveApp.getFileById(importData.ID).setTrashed(true);
}
}
}
}
また、 'getDataRange'で取得した範囲に一致する' getLastRow() 'と' getLastColumn() 'を使用してください。 – FTP
あなたは当然ですが、純粋な配列アプローチに焦点を当てることを好みました。なぜなら、普遍的なものだと思うからです。どのような2次元配列もこのように使用できます。とにかく私は答えにそれを含めておくべきですので、あなたが提供した追加情報をありがとう。 –