Cara memperbaiki kesalahan - Argumen tidak valid: file.contentType, saat membuat Google Sheet baru

Saya mencoba membuat Google Sheet baru di folder yang dibuat, tetapi saya mengalami masalah dengan Jenis konten.

Saya telah mencari kesalahan ini tetapi belum menemukan apa pun. Sebagian besar penelusuran menghasilkan kesalahan MimeType, tapi menurut saya bukan itu masalahnya. Di bawah ini adalah kode yang saya gunakan:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var newFolder = DriveApp.getFolderById("MyID").createFolder("New Folder");
newFolder.createFile("myFileName",ss,MimeType.GOOGLE_DOCS);

Setiap kali saya menjalankan ini di spreadsheet saya, saya mendapatkan kesalahan berikut:

Argumen tidak valid: file.contentType (baris 3, file "Kode")

Saya telah mencoba menggunakan "" untuk konten untuk createFile.


person Pcud    schedule 02.02.2017    source sumber
comment
Apakah Anda ingin mengonversi dari spreadsheet ke dokumen? Atau Anda hanya ingin membuat dokumen baru? Karena di skrip Anda sepertinya Anda ingin mengonversi atau mengimpor data spreadsheet ke Google Doc.   -  person Tanaike    schedule 02.02.2017
comment
Oh wow. Aku tidak percaya aku tidak menyadarinya. Saya bermaksud membuat spreadsheet baru. Saya mengubah MimeType menjadi .GOOGLE_SHEETS, tetapi kesalahan yang sama masih muncul.   -  person Pcud    schedule 03.02.2017


Jawaban (3)


Bagaimana dengan sampel berikut? Saya juga tidak dapat menggunakan MimeType dari GOOGLE_SHEETS dan GOOGLE_DOCS. Saya tidak tahu kenapa. Jadi saya mengusulkan penggunaan SpreadsheetApp.create(). Alurnya adalah sebagai berikut.

  1. Buat spreadsheet menggunakan SpreadsheetApp.create().

  2. Tambahkan informasi folder tujuan ke spreadsheet.

  3. Hapus informasi folder asli dari spreadsheet.

Dengan ini, Anda dapat membuat spreadsheet ke folder yang Anda inginkan.

Naskah:

var sheetfile = "myFileName";
var destfolder = "MyID";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFolderById(destfolder).addFile(file);
var docfile = file.getParents().next().removeFile(file);

Diperbarui: 25 November 2020

Pada tanggal 27 Juli 2020, metode moveTo(destination) telah ditambahkan. Dan, metode addFile dan removeFile tidak akan digunakan lagi. Ref Jadi, ketika metode moveTo(destination) digunakan untuk script diatas menjadi seperti berikut.

var sheetfile = "myFileName";
var destfolder = "MyID";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFolderById(destfolder);
var docfile = file.moveTo(destfolder);
  • Ketika metode Files: insert of Drive API digunakan, skrip berikut juga dapat digunakan. Referensi

      var sheetfile = "myFileName";
      var destfolder = "MyID";
      Drive.Files.insert({title: sheetfile, mimeType: MimeType.GOOGLE_SHEETS, parents: [{id: destfolder}]});
    
person Tanaike    schedule 03.02.2017
comment
Mengingat pembaruan Google drive 30-Sep-2020 di mana setiap objek hanya dapat memiliki satu induk - saya tidak yakin apakah ini akan berhasil - var docfile = file.getParents().next().removeFile(file); - person Moiz Tankiwala; 25.11.2020
comment
@Moiz Tankiwala Terima kasih atas komentar Anda. Pada tahap saat ini, tampaknya skrip di atas berfungsi. Namun dari komentar Anda, saya menambahkan pola lain dalam jawaban saya. - person Tanaike; 25.11.2020

metode ini bekerja dengan saya

function myFunction() {
var sheetfile = "myfilename";
var destfolder = "MYFOLDER";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFoldersByName(destfolder).next();
var docfile = file.moveTo(destfolder);
}

tanpa berikutnya(); itu tidak berhasil untuk saya

person bedji    schedule 10.03.2021

Saya menghadapi masalah yang sama dan alih-alih mencoba membuat file dengan cepat, saya berpikir untuk memiliki solusi yang lebih bersih dengan menyimpan satu spreadsheet kosong (Cukup buat spreadsheet di drive dan beri nama sebagai Templat) sebagai templat untuk dibuat salinan keluar dari.

var templateFileId = asfashfkhsfkhfkhkashf; //Ini adalah sesuatu yang harus Anda definisikan sebagai konstanta var DestinationFolderId = sdfashfkhaskf var newSpreadsheet = DriveApp.getFileById(templateFileId).makeCopy(NewSpreadsheet, DestinationFolderId);

person Moiz Tankiwala    schedule 25.11.2020