別のオプション (および最終的に使用したオプション) は、すべての書式設定が事前に構成された Google スプレッドシート ファイルをテンプレートとして手動で作成することです。次に、ユーザーの Google ドライブに新しいスプレッドシート ドキュメントを作成する代わりに、次のようにテンプレートをコピーします。
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 で指定されたアカウントが確実にアクセスできるようにする方法を見つける必要があります。
それが役立つことを願っています!