Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 把Gmail放到谷歌表格里_Javascript_Arrays_Multidimensional Array_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 把Gmail放到谷歌表格里

Javascript 把Gmail放到谷歌表格里,javascript,arrays,multidimensional-array,google-apps-script,google-sheets,Javascript,Arrays,Multidimensional Array,Google Apps Script,Google Sheets,这个脚本非常好地将电子邮件拉到我的工作表中。我的问题是,该函数只提取列出的前两个字段。e、 例如,getPlainBody、getSubject——尽管需要更多字段。因此,我没有使用一个函数来提取我需要的所有字段(getPlainBody、getSubject、getTo、getDate、getFrom),而是只获取前两个字段(getPlainBody、getSubject)。是否有一个明显的修改,将所有5个字段拉入工作表 function getEmails_(q) { sh0.clear

这个脚本非常好地将电子邮件拉到我的工作表中。我的问题是,该函数只提取列出的前两个字段。e、 例如,getPlainBody、getSubject——尽管需要更多字段。因此,我没有使用一个函数来提取我需要的所有字段(getPlainBody、getSubject、getTo、getDate、getFrom),而是只获取前两个字段(getPlainBody、getSubject)。是否有一个明显的修改,将所有5个字段拉入工作表

function getEmails_(q) {
  sh0.clear();
    var emails = [];
    var threads = GmailApp.search(q);
    for (var i in threads) {
        var msgs = threads[i].getMessages();
        for (var j in msgs) {
            emails.push([msgs[j].getPlainBody(), [msgs[j].getSubject(), [msgs[j].getDate(), [msgs[j].getTo(), [msgs[j].getFrom()

            ]]]]]);
        }
    }
    return emails;

}

function appendData_(sh0, array2d) {
    sh0.getRange(sh0.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}

function saveEmails() {
    var array2d = getEmails_(SEARCH_QUERY);
    if (array2d) {
        appendData_(sh0, array2d);
    }}

您的代码很好,问题在于如何构造二维数组

.push()
方法中,使用方括号-[]-是在另一个数组中的另一个数组中的另一个数组中的另一个数组中构建一个数组,在下面的屏幕截图中更容易看到它。

您需要的是一个水平单元格数组和一个垂直行数组

因此,改变:

emails.push([msgs[j].getPlainBody(), [msgs[j].getSubject(), [msgs[j].getDate(), [msgs[j].getTo(), [msgs[j].getFrom()]]]]]);

就我个人而言,我通常都会将日期格式化为更具可读性的格式。您可以使用
实用程序来执行此操作。例如:格式:
2017年6月15日星期四11:18:18 GMT+0700(ICT)
to
2017年6月15日@11:18

var formatDate = Utilities.formatDate(emails[i][2], 'GMT+07:00', 'dd/MM/yyyy @ HH:mm')

詹姆斯-非常感谢你!你的修复工作,我一定会与你的日期建议工作。-josh@JoshuaRoberts请考虑接受我的回答。
var formatDate = Utilities.formatDate(emails[i][2], 'GMT+07:00', 'dd/MM/yyyy @ HH:mm')