私はGoogle App Scriptを使用しています。私は。。をしようとしています:
以下のコードは機能するはずですが、機能しません。これはdoesタスク1と3を実行します。つまり、コピーを作成し、そのコピーを目的のフォルダーに保存します。ただし、指定したファイル名のファイルは保存されません。代わりに、「[元のスプレッドシートファイル名]のコピー」として保存されます。これを行うために、私は File#makeCopy
(注:この質問は以前に回答されたことは知っていますが、GoogleがDocListサービスを廃止して以来、回答されていないと思います。)
この簡略化されたMCVEを作成したところ、期待どおりに動作することがわかりました。
function saveAsSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxx");
DriveApp.getFileById(sheet.getId()).makeCopy("desired file name", destFolder);
} //END function saveAsSpreadsheet
しかし、私の元のコードはそうではありません-コピーの名前が間違っています:
function saveAsSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var buildingNameAddress = sheet.getRangeByName('buildingNameAddress').getValue();
Logger.log(buildingNameAddress); //Logs correct string
var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxx");
DriveApp.getFileById(sheet.getId()).makeCopy(buildingNameAddress, destFolder);
}
これは私のために働いたあなたの機能のための修正されたコードです。メソッドsetNamedRange
を使用して名前を付けた名前付き範囲を設定していませんでした。それと、範囲の値を取得していた変数名をTestRange
に変更します。また、getValue()
は1つの値しか取得しませんが、値の範囲が必要なため、代わりにgetValues()
を使用しました。しかし、残りのコードは問題なく、完全に機能しました。
function saveAsSpreadsheet(){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange('Sheet1!A1:B3');
sheet.setNamedRange('buildingNameAddress', range);
var TestRange = sheet.getRangeByName('buildingNameAddress').getValues();
Logger.log(TestRange);
var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxx");
DriveApp.getFileById(sheet.getId()).makeCopy("Test File", destFolder);
}