另一种选择(也是最终使用的)是手动创建一个谷歌表格文件,所有格式都预先配置,作为模板。然后,不要在用户的 Google Drive 中创建新的电子表格文档,而是复制模板,如下所示:
var config = require('./config');
var google = require('googleapis');
function createSheetFromTemplate(user, templateFileId, done) {
var oauth2Client = new google.auth.OAuth2(config.google.clientId, config.google.clientSecret);
oauth2Client.setCredentials({
access_token: user.google.token,
refresh_token: user.google.refreshToken,
});
var drive = google.drive({
version: 'v2',
auth: oauth2Client
});
drive.files.copy({
fileId: templateFileId,
resource: {
title: 'New Google Sheet',
parents: [{
id: 'root'
}]
}
}, function(err, response) {
if (err) done(err)
initializeSpreadsheet(response.id, user, done);
});
}
在该代码中,templateFileId 是共享模板的文件 ID。您可以通过多种方式从共享模板文件中获取此 fileId,但最简单的方法是在共享时将其从 URL 中复制并粘贴出来。
例如,如果共享 URL 是:
https://docs.google.com/spreadsheets/d/1234567890abcdefghijklmnop/edit?usp=sharing
那么文件id是1234567890abcdefghijklmnop
在我的例子中,模板本身没有任何私有内容,所以我只是与配置为“可以查看”的“任何有链接的人”共享它,如下所述:
https://support.google.com/drive/answer/2494886
如果您需要将模板文件的内容保密,那么您需要找到某种方法来确保 config.google.clientId 指定的帐户可以访问它。
希望有帮助!